ZGlmZiAtLWdpdCBhLy50cmF2aXMueW1sIGIvLnRyYXZpcy55bWwKaW5kZXggMDcwYjIzYy4uYWIwYWE1NiAxMDA2NDQKLS0tIGEvLnRyYXZpcy55bWwKKysrIGIvLnRyYXZpcy55bWwKQEAgLTE0LDggKzE0LDcgQEAKICAgLSBEQj1wZG8vc3FsaXRlCiAKIGJlZm9yZV9zY3JpcHQ6Ci0gIC0gY3VybCAtcyBodHRwOi8vZ2V0Y29tcG9zZXIub3JnL2luc3RhbGxlciB8IHBocAotICAtIHBocCBjb21wb3Nlci5waGFyIGluc3RhbGwKKyAgLSBjb21wb3NlciBpbnN0YWxsIC0tZGV2IC0tbm8tcHJvZ3Jlc3MKICAgLSBzaCAtYyAiaWYgWyAnJERCJyA9ICdwZ3NxbCcgXSB8fCBbICckREInID0gJ3Bkby9wZ3NxbCcgXTsgdGhlbiBwc3FsIC1jICdEUk9QIERBVEFCQVNFIElGIEVYSVNUUyBjaV90ZXN0OycgLVUgcG9zdGdyZXM7IGZpIgogICAtIHNoIC1jICJpZiBbICckREInID0gJ3Bnc3FsJyBdIHx8IFsgJyREQicgPSAncGRvL3Bnc3FsJyBdOyB0aGVuIHBzcWwgLWMgJ2NyZWF0ZSBkYXRhYmFzZSBjaV90ZXN0OycgLVUgcG9zdGdyZXM7IGZpIgogICAtIHNoIC1jICJpZiBbICckREInID0gJ215c3FsJyBdIHx8IFsgJyREQicgPSAnbXlzcWxpJyBdIHx8IFsgJyREQicgPSAncGRvL215c3FsJyBdOyB0aGVuIG15c3FsIC1lICdjcmVhdGUgZGF0YWJhc2UgSUYgTk9UIEVYSVNUUyBjaV90ZXN0Oyc7IGZpIgpkaWZmIC0tZ2l0IGEvYXBwbGljYXRpb24vY29uZmlnL21pbWVzLnBocCBiL2FwcGxpY2F0aW9uL2NvbmZpZy9taW1lcy5waHAKaW5kZXggNWI4Y2VmZi4uNmZmMzgxMiAxMDA2NDQKLS0tIGEvYXBwbGljYXRpb24vY29uZmlnL21pbWVzLnBocAorKysgYi9hcHBsaWNhdGlvbi9jb25maWcvbWltZXMucGhwCkBAIC01OCw3ICs1OCw3IEBACiAJJ21pZicJPT4JJ2FwcGxpY2F0aW9uL3ZuZC5taWYnLAogCSd4bHMnCT0+CWFycmF5KCdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLCAnYXBwbGljYXRpb24vbXNleGNlbCcsICdhcHBsaWNhdGlvbi94LW1zZXhjZWwnLCAnYXBwbGljYXRpb24veC1tcy1leGNlbCcsICdhcHBsaWNhdGlvbi94LWV4Y2VsJywgJ2FwcGxpY2F0aW9uL3gtZG9zX21zX2V4Y2VsJywgJ2FwcGxpY2F0aW9uL3hscycsICdhcHBsaWNhdGlvbi94LXhscycsICdhcHBsaWNhdGlvbi9leGNlbCcsICdhcHBsaWNhdGlvbi9kb3dubG9hZCcsICdhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlJywgJ2FwcGxpY2F0aW9uL21zd29yZCcpLAogCSdwcHQnCT0+CWFycmF5KCdhcHBsaWNhdGlvbi9wb3dlcnBvaW50JywgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JyksCi0JJ3BwdHgnCT0+IAknYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbicsCisJJ3BwdHgnCT0+IAlhcnJheSgnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbicsICdhcHBsaWNhdGlvbi94LXppcCcsICdhcHBsaWNhdGlvbi96aXAnKSwKIAknd2J4bWwnCT0+CSdhcHBsaWNhdGlvbi93YnhtbCcsCiAJJ3dtbGMnCT0+CSdhcHBsaWNhdGlvbi93bWxjJywKIAknZGNyJwk9PgknYXBwbGljYXRpb24veC1kaXJlY3RvcicsCkBAIC0xMjYsNyArMTI2LDcgQEAKIAknZG9jeCcJPT4JYXJyYXkoJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JywgJ2FwcGxpY2F0aW9uL3ppcCcsICdhcHBsaWNhdGlvbi9tc3dvcmQnLCAnYXBwbGljYXRpb24veC16aXAnKSwKIAknZG90Jwk9PglhcnJheSgnYXBwbGljYXRpb24vbXN3b3JkJywgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UnKSwKIAknZG90eCcJPT4JYXJyYXkoJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JywgJ2FwcGxpY2F0aW9uL3ppcCcsICdhcHBsaWNhdGlvbi9tc3dvcmQnKSwKLQkneGxzeCcJPT4JYXJyYXkoJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JywgJ2FwcGxpY2F0aW9uL3ppcCcsICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLCAnYXBwbGljYXRpb24vbXN3b3JkJyksCisJJ3hsc3gnCT0+CWFycmF5KCdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsICdhcHBsaWNhdGlvbi96aXAnLCAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJywgJ2FwcGxpY2F0aW9uL21zd29yZCcsICdhcHBsaWNhdGlvbi94LXppcCcpLAogCSd3b3JkJwk9PglhcnJheSgnYXBwbGljYXRpb24vbXN3b3JkJywgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpLAogCSd4bCcJPT4JJ2FwcGxpY2F0aW9uL2V4Y2VsJywKIAknZW1sJwk9PgknbWVzc2FnZS9yZmM4MjInLApkaWZmIC0tZ2l0IGEvY29tcG9zZXIuanNvbiBiL2NvbXBvc2VyLmpzb24KaW5kZXggN2Q2MDAyMC4uZTIxYWFlZCAxMDA2NDQKLS0tIGEvY29tcG9zZXIuanNvbgorKysgYi9jb21wb3Nlci5qc29uCkBAIC0xLDggKzEsOSBAQAogeworICAgICJuYW1lIiA6ICJlbGxpc2xhYi9jb2RlaWduaXRlciIsCiAgICAgInJlcXVpcmUiOiB7Ci0gICAgICAgICJtaWtleTE3OS92ZnNTdHJlYW0iOiAiKiIKKyAgICAgICAgInBocCI6ICI+PTUuMi40IgogICAgIH0sCiAgICAgInJlcXVpcmUtZGV2IjogewotCQkicGhwdW5pdC9waHB1bml0IjogIioiCi0JfQorICAgICAgIm1pa2V5MTc5L3Zmc1N0cmVhbSI6ICIqIgorCQl9CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3lzdGVtL2NvcmUvQ29kZUlnbml0ZXIucGhwIGIvc3lzdGVtL2NvcmUvQ29kZUlnbml0ZXIucGhwCmluZGV4IGNiNGI3MzUuLjdmNzY5NzcgMTAwNjQ0Ci0tLSBhL3N5c3RlbS9jb3JlL0NvZGVJZ25pdGVyLnBocAorKysgYi9zeXN0ZW0vY29yZS9Db2RlSWduaXRlci5waHAKQEAgLTI2Myw3ICsyNjMsNyBAQAogCSRjbGFzcyAgPSAkUlRSLT5mZXRjaF9jbGFzcygpOwogCSRtZXRob2QgPSAkUlRSLT5mZXRjaF9tZXRob2QoKTsKIAotCWlmICggISBjbGFzc19leGlzdHMoJGNsYXNzKSBPUiAkbWV0aG9kWzBdID09PSAnXycgT1IgbWV0aG9kX2V4aXN0cygnQ0lfQ29udHJvbGxlcicsICRtZXRob2QpKQorCWlmICggISBjbGFzc19leGlzdHMoJGNsYXNzLCBGQUxTRSkgT1IgJG1ldGhvZFswXSA9PT0gJ18nIE9SIG1ldGhvZF9leGlzdHMoJ0NJX0NvbnRyb2xsZXInLCAkbWV0aG9kKSkKIAl7CiAJCWlmICggISBlbXB0eSgkUlRSLT5yb3V0ZXNbJzQwNF9vdmVycmlkZSddKSkKIAkJewpAQCAtMjcyLDcgKzI3Miw3IEBACiAJCQkJJG1ldGhvZCA9ICdpbmRleCc7CiAJCQl9CiAKLQkJCWlmICggISBjbGFzc19leGlzdHMoJGNsYXNzKSkKKwkJCWlmICggISBjbGFzc19leGlzdHMoJGNsYXNzLCBGQUxTRSkpCiAJCQl7CiAJCQkJaWYgKCAhIGZpbGVfZXhpc3RzKEFQUFBBVEguJ2NvbnRyb2xsZXJzLycuJGNsYXNzLicucGhwJykpCiAJCQkJewpAQCAtMzEwLDcgKzMxMCw3IEBACiAJCQkJJG1ldGhvZCA9ICdpbmRleCc7CiAJCQl9CiAKLQkJCWlmICggISBjbGFzc19leGlzdHMoJGNsYXNzKSkKKwkJCWlmICggISBjbGFzc19leGlzdHMoJGNsYXNzLCBGQUxTRSkpCiAJCQl7CiAJCQkJaWYgKCAhIGZpbGVfZXhpc3RzKEFQUFBBVEguJ2NvbnRyb2xsZXJzLycuJGNsYXNzLicucGhwJykpCiAJCQkJewpkaWZmIC0tZ2l0IGEvc3lzdGVtL2NvcmUvQ29tbW9uLnBocCBiL3N5c3RlbS9jb3JlL0NvbW1vbi5waHAKaW5kZXggZjhjMTI5MC4uZWU5YmIyZSAxMDA2NDQKLS0tIGEvc3lzdGVtL2NvcmUvQ29tbW9uLnBocAorKysgYi9zeXN0ZW0vY29yZS9Db21tb24ucGhwCkBAIC0xNDksNyArMTQ5LDcgQEAKIAkJCXsKIAkJCQkkbmFtZSA9ICRwcmVmaXguJGNsYXNzOwogCi0JCQkJaWYgKGNsYXNzX2V4aXN0cygkbmFtZSkgPT09IEZBTFNFKQorCQkJCWlmIChjbGFzc19leGlzdHMoJG5hbWUsIEZBTFNFKSA9PT0gRkFMU0UpCiAJCQkJewogCQkJCQlyZXF1aXJlX29uY2UoJHBhdGguJGRpcmVjdG9yeS4nLycuJGNsYXNzLicucGhwJyk7CiAJCQkJfQpAQCAtMTYzLDcgKzE2Myw3IEBACiAJCXsKIAkJCSRuYW1lID0gY29uZmlnX2l0ZW0oJ3N1YmNsYXNzX3ByZWZpeCcpLiRjbGFzczsKIAotCQkJaWYgKGNsYXNzX2V4aXN0cygkbmFtZSkgPT09IEZBTFNFKQorCQkJaWYgKGNsYXNzX2V4aXN0cygkbmFtZSwgRkFMU0UpID09PSBGQUxTRSkKIAkJCXsKIAkJCQlyZXF1aXJlX29uY2UoQVBQUEFUSC4kZGlyZWN0b3J5LicvJy5jb25maWdfaXRlbSgnc3ViY2xhc3NfcHJlZml4JykuJGNsYXNzLicucGhwJyk7CiAJCQl9CmRpZmYgLS1naXQgYS9zeXN0ZW0vY29yZS9Ib29rcy5waHAgYi9zeXN0ZW0vY29yZS9Ib29rcy5waHAKaW5kZXggMTdmNmEwMi4uYjNiMTExOSAxMDA2NDQKLS0tIGEvc3lzdGVtL2NvcmUvSG9va3MucGhwCisrKyBiL3N5c3RlbS9jb3JlL0hvb2tzLnBocApAQCAtMTk1LDcgKzE5NSw3IEBACiAJCS8vIENhbGwgdGhlIHJlcXVlc3RlZCBjbGFzcyBhbmQvb3IgZnVuY3Rpb24KIAkJaWYgKCRjbGFzcyAhPT0gRkFMU0UpCiAJCXsKLQkJCWlmICggISBjbGFzc19leGlzdHMoJGNsYXNzKSkKKwkJCWlmICggISBjbGFzc19leGlzdHMoJGNsYXNzLCBGQUxTRSkpCiAJCQl7CiAJCQkJcmVxdWlyZSgkZmlsZXBhdGgpOwogCQkJfQpkaWZmIC0tZ2l0IGEvc3lzdGVtL2NvcmUvTG9hZGVyLnBocCBiL3N5c3RlbS9jb3JlL0xvYWRlci5waHAKaW5kZXggOTMwNmEwOS4uZDRlNjMyMyAxMDA2NDQKLS0tIGEvc3lzdGVtL2NvcmUvTG9hZGVyLnBocAorKysgYi9zeXN0ZW0vY29yZS9Mb2FkZXIucGhwCkBAIC0yNzAsNyArMjcwLDcgQEAKIAkJCQljb250aW51ZTsKIAkJCX0KIAotCQkJaWYgKCRkYl9jb25uICE9PSBGQUxTRSAmJiAhIGNsYXNzX2V4aXN0cygnQ0lfREInKSkKKwkJCWlmICgkZGJfY29ubiAhPT0gRkFMU0UgJiYgISBjbGFzc19leGlzdHMoJ0NJX0RCJywgRkFMU0UpKQogCQkJewogCQkJCWlmICgkZGJfY29ubiA9PT0gVFJVRSkKIAkJCQl7CkBAIC0yODAsNyArMjgwLDcgQEAKIAkJCQkkQ0ktPmxvYWQtPmRhdGFiYXNlKCRkYl9jb25uLCBGQUxTRSwgVFJVRSk7CiAJCQl9CiAKLQkJCWlmICggISBjbGFzc19leGlzdHMoJ0NJX01vZGVsJykpCisJCQlpZiAoICEgY2xhc3NfZXhpc3RzKCdDSV9Nb2RlbCcsIEZBTFNFKSkKIAkJCXsKIAkJCQlsb2FkX2NsYXNzKCdNb2RlbCcsICdjb3JlJyk7CiAJCQl9CkBAIC00NTksNyArNDU5LDcgQEAKIAkgKi8KIAlwdWJsaWMgZnVuY3Rpb24gdmFycygkdmFycyA9IGFycmF5KCksICR2YWwgPSAnJykKIAl7Ci0JCWlmICgkdmFsICE9PSAnJyAmJiBpc19zdHJpbmcoJHZhcnMpKQorCQlpZiAoaXNfc3RyaW5nKCR2YXJzKSkKIAkJewogCQkJJHZhcnMgPSBhcnJheSgkdmFycyA9PiAkdmFsKTsKIAkJfQpAQCAtMTA5MSwxMSArMTA5MSwxMSBAQAogCiAJCWlmICgkcHJlZml4ID09PSAnJykKIAkJewotCQkJaWYgKGNsYXNzX2V4aXN0cygnQ0lfJy4kY2xhc3MpKQorCQkJaWYgKGNsYXNzX2V4aXN0cygnQ0lfJy4kY2xhc3MsIEZBTFNFKSkKIAkJCXsKIAkJCQkkbmFtZSA9ICdDSV8nLiRjbGFzczsKIAkJCX0KLQkJCWVsc2VpZiAoY2xhc3NfZXhpc3RzKGNvbmZpZ19pdGVtKCdzdWJjbGFzc19wcmVmaXgnKS4kY2xhc3MpKQorCQkJZWxzZWlmIChjbGFzc19leGlzdHMoY29uZmlnX2l0ZW0oJ3N1YmNsYXNzX3ByZWZpeCcpLiRjbGFzcywgRkFMU0UpKQogCQkJewogCQkJCSRuYW1lID0gY29uZmlnX2l0ZW0oJ3N1YmNsYXNzX3ByZWZpeCcpLiRjbGFzczsKIAkJCX0KQEAgLTExMTAsNyArMTExMCw3IEBACiAJCX0KIAogCQkvLyBJcyB0aGUgY2xhc3MgbmFtZSB2YWxpZD8KLQkJaWYgKCAhIGNsYXNzX2V4aXN0cygkbmFtZSkpCisJCWlmICggISBjbGFzc19leGlzdHMoJG5hbWUsIEZBTFNFKSkKIAkJewogCQkJbG9nX21lc3NhZ2UoJ2Vycm9yJywgJ05vbi1leGlzdGVudCBjbGFzczogJy4kbmFtZSk7CiAJCQlzaG93X2Vycm9yKCdOb24tZXhpc3RlbnQgY2xhc3M6ICcuJG5hbWUpOwpkaWZmIC0tZ2l0IGEvc3lzdGVtL2NvcmUvT3V0cHV0LnBocCBiL3N5c3RlbS9jb3JlL091dHB1dC5waHAKaW5kZXggYTIwODQxNC4uMjVlY2Q0OSAxMDA2NDQKLS0tIGEvc3lzdGVtL2NvcmUvT3V0cHV0LnBocAorKysgYi9zeXN0ZW0vY29yZS9PdXRwdXQucGhwCkBAIC0zOTUsNyArMzk1LDcgQEAKIAkJZ2xvYmFsICRCTSwgJENGRzsKIAogCQkvLyBHcmFiIHRoZSBzdXBlciBvYmplY3QgaWYgd2UgY2FuLgotCQlpZiAoY2xhc3NfZXhpc3RzKCdDSV9Db250cm9sbGVyJykpCisJCWlmIChjbGFzc19leGlzdHMoJ0NJX0NvbnRyb2xsZXInLCBGQUxTRSkpCiAJCXsKIAkJCSRDSSA9JiBnZXRfaW5zdGFuY2UoKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3lzdGVtL2RhdGFiYXNlL0RCLnBocCBiL3N5c3RlbS9kYXRhYmFzZS9EQi5waHAKaW5kZXggZDkxMDQ3NC4uODNkOTczMyAxMDA2NDQKLS0tIGEvc3lzdGVtL2RhdGFiYXNlL0RCLnBocAorKysgYi9zeXN0ZW0vZGF0YWJhc2UvREIucGhwCkBAIC0xNDksNyArMTQ5LDcgQEAKIAlpZiAoICEgaXNzZXQoJHF1ZXJ5X2J1aWxkZXIpIE9SICRxdWVyeV9idWlsZGVyID09PSBUUlVFKQogCXsKIAkJcmVxdWlyZV9vbmNlKEJBU0VQQVRILidkYXRhYmFzZS9EQl9xdWVyeV9idWlsZGVyLnBocCcpOwotCQlpZiAoICEgY2xhc3NfZXhpc3RzKCdDSV9EQicpKQorCQlpZiAoICEgY2xhc3NfZXhpc3RzKCdDSV9EQicsIEZBTFNFKSkKIAkJewogCQkJLyoqCiAJCQkgKiBDSV9EQgpAQCAtMTYyLDcgKzE2Miw3IEBACiAJCQljbGFzcyBDSV9EQiBleHRlbmRzIENJX0RCX3F1ZXJ5X2J1aWxkZXIgeyB9CiAJCX0KIAl9Ci0JZWxzZWlmICggISBjbGFzc19leGlzdHMoJ0NJX0RCJykpCisJZWxzZWlmICggISBjbGFzc19leGlzdHMoJ0NJX0RCJywgRkFMU0UpKQogCXsKIAkJLyoqCiAJIAkgKiBAaWdub3JlCmRpZmYgLS1naXQgYS9zeXN0ZW0vZGF0YWJhc2UvREJfZHJpdmVyLnBocCBiL3N5c3RlbS9kYXRhYmFzZS9EQl9kcml2ZXIucGhwCmluZGV4IDM1YWM4ZTguLmVkMDI5NmQgMTAwNjQ0Ci0tLSBhL3N5c3RlbS9kYXRhYmFzZS9EQl9kcml2ZXIucGhwCisrKyBiL3N5c3RlbS9kYXRhYmFzZS9EQl9kcml2ZXIucGhwCkBAIC02MjUsNyArNjI1LDcgQEAKIAkJCQkvLyBpZiB0cmFuc2FjdGlvbnMgYXJlIGVuYWJsZWQuIElmIHdlIGRvbid0IGNhbGwgdGhpcyBoZXJlCiAJCQkJLy8gdGhlIGVycm9yIG1lc3NhZ2Ugd2lsbCB0cmlnZ2VyIGFuIGV4aXQsIGNhdXNpbmcgdGhlCiAJCQkJLy8gdHJhbnNhY3Rpb25zIHRvIHJlbWFpbiBpbiBsaW1iby4KLQkJCQkkdGhpcy0+dHJhbnNfY29tcGxldGUoKTsKKwkJCQkkdGhpcy0+X3RyYW5zX2RlcHRoID4gMCAmJiAkdGhpcy0+dHJhbnNfY29tcGxldGUoKTsKIAogCQkJCS8vIERpc3BsYXkgZXJyb3JzCiAJCQkJcmV0dXJuICR0aGlzLT5kaXNwbGF5X2Vycm9yKGFycmF5KCdFcnJvciBOdW1iZXI6ICcuJGVycm9yWydjb2RlJ10sICRlcnJvclsnbWVzc2FnZSddLCAkc3FsKSk7CkBAIC0xNTYwLDcgKzE1NjAsNyBAQAogCSAqLwogCXByb3RlY3RlZCBmdW5jdGlvbiBfY2FjaGVfaW5pdCgpCiAJewotCQlpZiAoY2xhc3NfZXhpc3RzKCdDSV9EQl9DYWNoZScpKQorCQlpZiAoY2xhc3NfZXhpc3RzKCdDSV9EQl9DYWNoZScsIEZBTFNFKSkKIAkJewogCQkJaWYgKGlzX29iamVjdCgkdGhpcy0+Q0FDSEUpKQogCQkJewpkaWZmIC0tZ2l0IGEvc3lzdGVtL2RhdGFiYXNlL0RCX3F1ZXJ5X2J1aWxkZXIucGhwIGIvc3lzdGVtL2RhdGFiYXNlL0RCX3F1ZXJ5X2J1aWxkZXIucGhwCmluZGV4IGM3YmM0YTYuLjg1YTIzM2IgMTAwNjQ0Ci0tLSBhL3N5c3RlbS9kYXRhYmFzZS9EQl9xdWVyeV9idWlsZGVyLnBocAorKysgYi9zeXN0ZW0vZGF0YWJhc2UvREJfcXVlcnlfYnVpbGRlci5waHAKQEAgLTI2MjcsNiArMjYyNyw3IEBACiAJCSR0aGlzLT5fcmVzZXRfcnVuKGFycmF5KAogCQkJJ3FiX3NldCcJPT4gYXJyYXkoKSwKIAkJCSdxYl9mcm9tJwk9PiBhcnJheSgpLAorCQkJJ3FiX2pvaW4nCT0+IGFycmF5KCksCiAJCQkncWJfd2hlcmUnCT0+IGFycmF5KCksCiAJCQkncWJfb3JkZXJieScJPT4gYXJyYXkoKSwKIAkJCSdxYl9rZXlzJwk9PiBhcnJheSgpLApkaWZmIC0tZ2l0IGEvc3lzdGVtL2RhdGFiYXNlL0RCX3Jlc3VsdC5waHAgYi9zeXN0ZW0vZGF0YWJhc2UvREJfcmVzdWx0LnBocAppbmRleCBhMDQ0ZmQ1Li40MWE4NTE3IDEwMDY0NAotLS0gYS9zeXN0ZW0vZGF0YWJhc2UvREJfcmVzdWx0LnBocAorKysgYi9zeXN0ZW0vZGF0YWJhc2UvREJfcmVzdWx0LnBocApAQCAtNDc4LDEyICs0NzgsOSBAQAogCQkJcmV0dXJuIE5VTEw7CiAJCX0KIAotCQlpZiAoaXNzZXQoJHJlc3VsdFskdGhpcy0+Y3VycmVudF9yb3cgKyAxXSkpCi0JCXsKLQkJCSsrJHRoaXMtPmN1cnJlbnRfcm93OwotCQl9Ci0KLQkJcmV0dXJuICRyZXN1bHRbJHRoaXMtPmN1cnJlbnRfcm93XTsKKwkJcmV0dXJuIGlzc2V0KCRyZXN1bHRbJHRoaXMtPmN1cnJlbnRfcm93ICsgMV0pCisJCQk/ICRyZXN1bHRbKyskdGhpcy0+Y3VycmVudF9yb3ddCisJCQk6IE5VTEw7CiAJfQogCiAJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3N5c3RlbS9kYXRhYmFzZS9EQl91dGlsaXR5LnBocCBiL3N5c3RlbS9kYXRhYmFzZS9EQl91dGlsaXR5LnBocAppbmRleCA5ODIyZmRhLi45Zjk1M2Q0IDEwMDY0NAotLS0gYS9zeXN0ZW0vZGF0YWJhc2UvREJfdXRpbGl0eS5waHAKKysrIGIvc3lzdGVtL2RhdGFiYXNlL0RCX3V0aWxpdHkucGhwCkBAIC0yMzgsNyArMjM4LDcgQEAKIAkJCSRvdXQgLj0gJGVuY2xvc3VyZS5zdHJfcmVwbGFjZSgkZW5jbG9zdXJlLCAkZW5jbG9zdXJlLiRlbmNsb3N1cmUsICRuYW1lKS4kZW5jbG9zdXJlLiRkZWxpbTsKIAkJfQogCi0JCSRvdXQgPSBydHJpbSgkb3V0KS4kbmV3bGluZTsKKwkJJG91dCA9IHN1YnN0cihydHJpbSgkb3V0KSwgMCwgLXN0cmxlbigkZGVsaW0pKS4kbmV3bGluZTsKIAogCQkvLyBOZXh0IGJsYXN0IHRocm91Z2ggdGhlIHJlc3VsdCBhcnJheSBhbmQgYnVpbGQgb3V0IHRoZSByb3dzCiAJCXdoaWxlICgkcm93ID0gJHF1ZXJ5LT51bmJ1ZmZlcmVkX3JvdygnYXJyYXknKSkKQEAgLTI0Nyw3ICsyNDcsNyBAQAogCQkJewogCQkJCSRvdXQgLj0gJGVuY2xvc3VyZS5zdHJfcmVwbGFjZSgkZW5jbG9zdXJlLCAkZW5jbG9zdXJlLiRlbmNsb3N1cmUsICRpdGVtKS4kZW5jbG9zdXJlLiRkZWxpbTsKIAkJCX0KLQkJCSRvdXQgPSBydHJpbSgkb3V0KS4kbmV3bGluZTsKKwkJCSRvdXQgPSBzdWJzdHIocnRyaW0oJG91dCksIDAsIC1zdHJsZW4oJGRlbGltKSkuJG5ld2xpbmU7CiAJCX0KIAogCQlyZXR1cm4gJG91dDsKZGlmZiAtLWdpdCBhL3N5c3RlbS9kYXRhYmFzZS9kcml2ZXJzL3Bkby9wZG9fZHJpdmVyLnBocCBiL3N5c3RlbS9kYXRhYmFzZS9kcml2ZXJzL3Bkby9wZG9fZHJpdmVyLnBocAppbmRleCAzNGFkZjBmLi5mYTg5NjYxIDEwMDY0NAotLS0gYS9zeXN0ZW0vZGF0YWJhc2UvZHJpdmVycy9wZG8vcGRvX2RyaXZlci5waHAKKysrIGIvc3lzdGVtL2RhdGFiYXNlL2RyaXZlcnMvcGRvL3Bkb19kcml2ZXIucGhwCkBAIC00OSwxMyArNDksNiBAQAogCXB1YmxpYyAkZGJkcml2ZXIgPSAncGRvJzsKIAogCS8qKgotCSAqIFRyYW5zYWN0aW9uIGVuYWJsZWQgZmxhZwotCSAqCi0JICogQHZhcglib29sCi0JICovCi0JcHVibGljICR0cmFuc19lbmFibGVkID0gRkFMU0U7Ci0KLQkvKioKIAkgKiBQRE8gT3B0aW9ucwogCSAqCiAJICogQHZhcglhcnJheQpkaWZmIC0tZ2l0IGEvc3lzdGVtL2hlbHBlcnMvZm9ybV9oZWxwZXIucGhwIGIvc3lzdGVtL2hlbHBlcnMvZm9ybV9oZWxwZXIucGhwCmluZGV4IDIwMGRhOGEuLjY5MjkwOWMgMTAwNjQ0Ci0tLSBhL3N5c3RlbS9oZWxwZXJzL2Zvcm1faGVscGVyLnBocAorKysgYi9zeXN0ZW0vaGVscGVycy9mb3JtX2hlbHBlci5waHAKQEAgLTIyOCw3ICsyMjgsNyBAQAogCSAqLwogCWZ1bmN0aW9uIGZvcm1fdXBsb2FkKCRkYXRhID0gJycsICR2YWx1ZSA9ICcnLCAkZXh0cmEgPSAnJykKIAl7Ci0JCSRkZWZhdWx0ID0gYXJyYXkoJ3R5cGUnID0+ICdmaWxlJywgJ25hbWUnID0+ICcnKTsKKwkJJGRlZmF1bHRzID0gYXJyYXkoJ3R5cGUnID0+ICdmaWxlJywgJ25hbWUnID0+ICcnKTsKIAkJaXNfYXJyYXkoJGRhdGEpIE9SICRkYXRhID0gYXJyYXkoJ25hbWUnID0+ICRkYXRhKTsKIAkJJGRhdGFbJ3R5cGUnXSA9ICdmaWxlJzsKIAkJcmV0dXJuICc8aW5wdXQgJy5fcGFyc2VfZm9ybV9hdHRyaWJ1dGVzKCRkYXRhLCAkZGVmYXVsdHMpLiRleHRyYS4iIC8+XG4iOwpAQCAtNjQyLDM3ICs2NDIsMTQgQEAKIAkgKi8KIAlmdW5jdGlvbiBzZXRfdmFsdWUoJGZpZWxkID0gJycsICRkZWZhdWx0ID0gJycsICRpc190ZXh0YXJlYSA9IEZBTFNFKQogCXsKLQkJaWYgKEZBTFNFICE9PSAoJE9CSiA9JiBfZ2V0X3ZhbGlkYXRpb25fb2JqZWN0KCkpICYmICRPQkotPmhhc19ydWxlKCRmaWVsZCkpCisJCWlmIChGQUxTRSA9PT0gKCRPQkogPSYgX2dldF92YWxpZGF0aW9uX29iamVjdCgpKSkKIAkJewotCQkJcmV0dXJuIGZvcm1fcHJlcCgkT0JKLT5zZXRfdmFsdWUoJGZpZWxkLCAkZGVmYXVsdCksICRpc190ZXh0YXJlYSk7CisJCQlyZXR1cm4gaXNzZXQoJF9QT1NUWyRmaWVsZF0pCisJCQkJPyBmb3JtX3ByZXAoJF9QT1NUWyRmaWVsZF0sICRpc190ZXh0YXJlYSkKKwkJCQk6IGZvcm1fcHJlcCgkZGVmYXVsdCwgJGlzX3RleHRhcmVhKTsKIAkJfQogCi0JCS8vIFdlIGNvdWxkbid0IGZpbmQgdGhlICRmaWVsZCBpbiB2YWxpZGF0b3IsIHNvIHRyeSBpbiAkX1BPU1QgYXJyYXkKLQkJJGluZGV4ID0gJGZpZWxkOwotCQkkY29udGFpbmVyID0gJF9QT1NUOwotCQkKLQkJLy8gVGVzdCBpZiB0aGUgJGZpZWxkIGlzIGFuIGFycmF5IG5hbWUsIGFuZCB0cnkgdG8gb2J0YWluIHRoZSBmaW5hbCBpbmRleAotCQlpZiAocHJlZ19tYXRjaF9hbGwoJy9cWyguKj8pXF0vJywgJGZpZWxkLCAkbWF0Y2hlcykpCi0JCXsKLQkJCXNzY2FuZigkZmllbGQsICclW15bXVsnLCAkaW5kZXgpOwotCQkJZm9yICgkaSA9IDAsICRjID0gY291bnQoJG1hdGNoZXNbMF0pOyAkaSA8ICRjOyAkaSsrKQotCQkJewotCQkJCWlmIChpc3NldCgkY29udGFpbmVyWyRpbmRleF0pICYmICRtYXRjaGVzWzFdWyRpXSAhPT0gJycpCi0JCQkJewotCQkJCQkkY29udGFpbmVyID0gJGNvbnRhaW5lclskaW5kZXhdOwotCQkJCQkkaW5kZXggPSAkbWF0Y2hlc1sxXVskaV07Ci0JCQkJfQotCQkJCWVsc2UKLQkJCQl7Ci0JCQkJCSRjb250YWluZXIgPSBhcnJheSgpOwotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQlyZXR1cm4gaXNzZXQoJGNvbnRhaW5lclskaW5kZXhdKSAKLQkJCT8gZm9ybV9wcmVwKCRjb250YWluZXJbJGluZGV4XSwgJGlzX3RleHRhcmVhKQotCQkJOiBmb3JtX3ByZXAoJGRlZmF1bHQsICRpc190ZXh0YXJlYSk7CisJCXJldHVybiBmb3JtX3ByZXAoJE9CSi0+c2V0X3ZhbHVlKCRmaWVsZCwgJGRlZmF1bHQpLCAkaXNfdGV4dGFyZWEpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3lzdGVtL2hlbHBlcnMvdGV4dF9oZWxwZXIucGhwIGIvc3lzdGVtL2hlbHBlcnMvdGV4dF9oZWxwZXIucGhwCmluZGV4IDU0ZGIxNGYuLmIyMzUxZGIgMTAwNjQ0Ci0tLSBhL3N5c3RlbS9oZWxwZXJzL3RleHRfaGVscGVyLnBocAorKysgYi9zeXN0ZW0vaGVscGVycy90ZXh0X2hlbHBlci5waHAKQEAgLTM2Myw5ICszNjMsOSBAQAogCSAqLwogCWZ1bmN0aW9uIGNvbnZlcnRfYWNjZW50ZWRfY2hhcmFjdGVycygkc3RyKQogCXsKLQkJc3RhdGljICRfZm9yZWlnbl9jaGFyYWN0ZXJzOworCQlzdGF0aWMgJGFycmF5X2Zyb20sICRhcnJheV90bzsKIAotCQlpZiAoICEgaXNfYXJyYXkoJF9mb3JlaWduX2NoYXJhY3RlcnMpKQorCQlpZiAoICEgaXNfYXJyYXkoJGFycmF5X2Zyb20pKQogCQl7CiAJCQlpZiAoZmlsZV9leGlzdHMoQVBQUEFUSC4nY29uZmlnL2ZvcmVpZ25fY2hhcnMucGhwJykpCiAJCQl7CkBAIC0zNzksMTQgKzM3OSwxNyBAQAogCiAJCQlpZiAoZW1wdHkoJGZvcmVpZ25fY2hhcmFjdGVycykgT1IgISBpc19hcnJheSgkZm9yZWlnbl9jaGFyYWN0ZXJzKSkKIAkJCXsKLQkJCQkkX2ZvcmVpZ25fY2hhcmFjdGVycyA9IGFycmF5KCk7CisJCQkJJGFycmF5X2Zyb20gPSBhcnJheSgpOworCQkJCSRhcnJheV90byA9IGFycmF5KCk7CisKIAkJCQlyZXR1cm4gJHN0cjsKIAkJCX0KIAotCQkJJF9mb3JlaWduX2NoYXJhY3RlcnMgPSAkZm9yZWlnbl9jaGFyYWN0ZXJzOworCQkJJGFycmF5X2Zyb20gPSBhcnJheV9rZXlzKCRmb3JlaWduX2NoYXJhY3RlcnMpOworCQkJJGFycmF5X3RvID0gYXJyYXlfdmFsdWVzKCRmb3JlaWduX2NoYXJhY3RlcnMpOwogCQl9CiAKLQkJcmV0dXJuIHByZWdfcmVwbGFjZShhcnJheV9rZXlzKCRfZm9yZWlnbl9jaGFyYWN0ZXJzKSwgYXJyYXlfdmFsdWVzKCRfZm9yZWlnbl9jaGFyYWN0ZXJzKSwgJHN0cik7CisJCXJldHVybiBwcmVnX3JlcGxhY2UoJGFycmF5X2Zyb20sICRhcnJheV90bywgJHN0cik7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zeXN0ZW0vbGlicmFyaWVzL0NhY2hlL2RyaXZlcnMvQ2FjaGVfbWVtY2FjaGVkLnBocCBiL3N5c3RlbS9saWJyYXJpZXMvQ2FjaGUvZHJpdmVycy9DYWNoZV9tZW1jYWNoZWQucGhwCmluZGV4IDgwOTZiMjYuLjI0NmE3YTIgMTAwNjQ0Ci0tLSBhL3N5c3RlbS9saWJyYXJpZXMvQ2FjaGUvZHJpdmVycy9DYWNoZV9tZW1jYWNoZWQucGhwCisrKyBiL3N5c3RlbS9saWJyYXJpZXMvQ2FjaGUvZHJpdmVycy9DYWNoZV9tZW1jYWNoZWQucGhwCkBAIC0xODIsMTEgKzE4MiwxMSBAQAogCQkJfQogCQl9CiAKLQkJaWYgKGNsYXNzX2V4aXN0cygnTWVtY2FjaGVkJykpCisJCWlmIChjbGFzc19leGlzdHMoJ01lbWNhY2hlZCcsIEZBTFNFKSkKIAkJewogCQkJJHRoaXMtPl9tZW1jYWNoZWQgPSBuZXcgTWVtY2FjaGVkKCk7CiAJCX0KLQkJZWxzZWlmIChjbGFzc19leGlzdHMoJ01lbWNhY2hlJykpCisJCWVsc2VpZiAoY2xhc3NfZXhpc3RzKCdNZW1jYWNoZScsIEZBTFNFKSkKIAkJewogCQkJJHRoaXMtPl9tZW1jYWNoZWQgPSBuZXcgTWVtY2FjaGUoKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3lzdGVtL2xpYnJhcmllcy9FbWFpbC5waHAgYi9zeXN0ZW0vbGlicmFyaWVzL0VtYWlsLnBocAppbmRleCAwMzE5YWM1Li5kYWEzODQ4IDEwMDY0NAotLS0gYS9zeXN0ZW0vbGlicmFyaWVzL0VtYWlsLnBocAorKysgYi9zeXN0ZW0vbGlicmFyaWVzL0VtYWlsLnBocApAQCAtOTQsNyArOTQsNyBAQAogCSAqIEB2YXIJaW50CiAJICovCiAJcHVibGljICRzbXRwX3RpbWVvdXQJPSA1OwotCQorCiAJLyoqCiAJICogU01UUCBwZXJzaXN0ZW50IGNvbm5lY3Rpb24KIAkgKgpAQCAtNDA4LDcgKzQwOCw3IEBACiAJfQogCiAJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQkKKwogCS8qKgogCSAqIERlc3RydWN0b3IgLSBSZWxlYXNlcyBSZXNvdXJjZXMKIAkgKgpAQCAtMjAyMSw3ICsyMDIxLDcgQEAKIAkJewogCQkJcmV0dXJuIFRSVUU7CiAJCX0KLQkJCQorCiAJCWlmIChzdHJwb3MoJHJlcGx5LCAnMzM0JykgIT09IDApCiAJCXsKIAkJCSR0aGlzLT5fc2V0X2Vycm9yX21lc3NhZ2UoJ2xhbmc6ZW1haWxfZmFpbGVkX3NtdHBfbG9naW4nLCAkcmVwbHkpOwpkaWZmIC0tZ2l0IGEvc3lzdGVtL2xpYnJhcmllcy9Gb3JtX3ZhbGlkYXRpb24ucGhwIGIvc3lzdGVtL2xpYnJhcmllcy9Gb3JtX3ZhbGlkYXRpb24ucGhwCmluZGV4IDFlZDUwODQuLjE3MmU3OTkgMTAwNjQ0Ci0tLSBhL3N5c3RlbS9saWJyYXJpZXMvRm9ybV92YWxpZGF0aW9uLnBocAorKysgYi9zeXN0ZW0vbGlicmFyaWVzL0Zvcm1fdmFsaWRhdGlvbi5waHAKQEAgLTgzNiwyMSArODM2LDYgQEAKIAkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAJLyoqCi0JICogQ2hlY2tzIGlmIHRoZSBydWxlIGlzIHByZXNlbnQgd2l0aGluIHRoZSB2YWxpZGF0b3IKLQkgKgotCSAqIFBlcm1pdHMgeW91IHRvIGNoZWNrIGlmIGEgcnVsZSBpcyBwcmVzZW50IHdpdGhpbiB0aGUgdmFsaWRhdG9yCi0JICoKLQkgKiBAcGFyYW0Jc3RyaW5nCXRoZSBmaWVsZCBuYW1lCi0JICogQHJldHVybglib29sCi0JICovCi0JcHVibGljIGZ1bmN0aW9uIGhhc19ydWxlKCRmaWVsZCkKLQl7Ci0JCXJldHVybiBpc3NldCgkdGhpcy0+X2ZpZWxkX2RhdGFbJGZpZWxkXSk7Ci0JfQotCi0JLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCS8qKgogCSAqIEdldCB0aGUgdmFsdWUgZnJvbSBhIGZvcm0KIAkgKgogCSAqIFBlcm1pdHMgeW91IHRvIHJlcG9wdWxhdGUgYSBmb3JtIGZpZWxkIHdpdGggdGhlIHZhbHVlIGl0IHdhcyBzdWJtaXR0ZWQKZGlmZiAtLWdpdCBhL3N5c3RlbS9saWJyYXJpZXMvTWlncmF0aW9uLnBocCBiL3N5c3RlbS9saWJyYXJpZXMvTWlncmF0aW9uLnBocAppbmRleCBiNjczZTljLi5jYzZmZTQ4IDEwMDY0NAotLS0gYS9zeXN0ZW0vbGlicmFyaWVzL01pZ3JhdGlvbi5waHAKKysrIGIvc3lzdGVtL2xpYnJhcmllcy9NaWdyYXRpb24ucGhwCkBAIC0yMjgsNyArMjI4LDcgQEAKIAkJCSRjbGFzcyA9ICdNaWdyYXRpb25fJy51Y2ZpcnN0KHN0cnRvbG93ZXIoJHRoaXMtPl9nZXRfbWlncmF0aW9uX25hbWUoYmFzZW5hbWUoJGZpbGUsICcucGhwJykpKSk7CiAKIAkJCS8vIFZhbGlkYXRlIHRoZSBtaWdyYXRpb24gZmlsZSBzdHJ1Y3R1cmUKLQkJCWlmICggISBjbGFzc19leGlzdHMoJGNsYXNzKSkKKwkJCWlmICggISBjbGFzc19leGlzdHMoJGNsYXNzLCBGQUxTRSkpCiAJCQl7CiAJCQkJJHRoaXMtPl9lcnJvcl9zdHJpbmcgPSBzcHJpbnRmKCR0aGlzLT5sYW5nLT5saW5lKCdtaWdyYXRpb25fY2xhc3NfZG9lc250X2V4aXN0JyksICRjbGFzcyk7CiAJCQkJcmV0dXJuIEZBTFNFOwpkaWZmIC0tZ2l0IGEvc3lzdGVtL2xpYnJhcmllcy9TZXNzaW9uL2RyaXZlcnMvU2Vzc2lvbl9jb29raWUucGhwIGIvc3lzdGVtL2xpYnJhcmllcy9TZXNzaW9uL2RyaXZlcnMvU2Vzc2lvbl9jb29raWUucGhwCmluZGV4IDExYmIzMmYuLjBlODY0NDEgMTAwNjQ0Ci0tLSBhL3N5c3RlbS9saWJyYXJpZXMvU2Vzc2lvbi9kcml2ZXJzL1Nlc3Npb25fY29va2llLnBocAorKysgYi9zeXN0ZW0vbGlicmFyaWVzL1Nlc3Npb24vZHJpdmVycy9TZXNzaW9uX2Nvb2tpZS5waHAKQEAgLTQ5NCw3ICs0OTQsNyBAQAogCQkkdGhpcy0+dXNlcmRhdGEgPSBhcnJheSgKIAkJCSdzZXNzaW9uX2lkJwk9PiAkdGhpcy0+X21ha2Vfc2Vzc19pZCgpLAogCQkJJ2lwX2FkZHJlc3MnCT0+ICR0aGlzLT5DSS0+aW5wdXQtPmlwX2FkZHJlc3MoKSwKLQkJCSd1c2VyX2FnZW50Jwk9PiBzdWJzdHIoJHRoaXMtPkNJLT5pbnB1dC0+dXNlcl9hZ2VudCgpLCAwLCAxMjApLAorCQkJJ3VzZXJfYWdlbnQnCT0+IHRyaW0oc3Vic3RyKCR0aGlzLT5DSS0+aW5wdXQtPnVzZXJfYWdlbnQoKSwgMCwgMTIwKSksCiAJCQknbGFzdF9hY3Rpdml0eScJPT4gJHRoaXMtPm5vdywKIAkJKTsKIApAQCAtNjAyLDYgKzYwMiw5IEBACiAJCQkJJHNldFsndXNlcl9kYXRhJ10gPSAkdGhpcy0+X3NlcmlhbGl6ZSgkdXNlcmRhdGEpOwogCQkJfQogCisJCQkvLyBSZXNldCBxdWVyeSBidWlsZGVyIHZhbHVlcy4KKwkJCSR0aGlzLT5DSS0+ZGItPnJlc2V0X3F1ZXJ5KCk7CisKIAkJCS8vIFJ1biB0aGUgdXBkYXRlIHF1ZXJ5CiAJCQkvLyBBbnkgdGltZSB3ZSBjaGFuZ2UgdGhlIHNlc3Npb24gaWQsIGl0IGdldHMgdXBkYXRlZCBpbW1lZGlhdGVseSwKIAkJCS8vIHNvIG91ciB3aGVyZSBjbGF1c2UgYmVsb3cgaXMgYWx3YXlzIHNhZmUKZGlmZiAtLWdpdCBhL3N5c3RlbS9saWJyYXJpZXMvVXBsb2FkLnBocCBiL3N5c3RlbS9saWJyYXJpZXMvVXBsb2FkLnBocAppbmRleCBhY2Q3NmIwLi4xYzE0Zjk5IDEwMDY0NAotLS0gYS9zeXN0ZW0vbGlicmFyaWVzL1VwbG9hZC5waHAKKysrIGIvc3lzdGVtL2xpYnJhcmllcy9VcGxvYWQucGhwCkBAIC0xMjEyLDcgKzEyMTIsNyBAQAogCQkgKiBOb3RlczoKIAkJICoJLSB0aGUgRElSRUNUT1JZX1NFUEFSQVRPUiBjb21wYXJpc29uIGVuc3VyZXMgdGhhdCB3ZSdyZSBub3Qgb24gYSBXaW5kb3dzIHN5c3RlbQogCQkgKgktIG1hbnkgc3lzdGVtIGFkbWlucyB3b3VsZCBkaXNhYmxlIHRoZSBleGVjKCksIHNoZWxsX2V4ZWMoKSwgcG9wZW4oKSBhbmQgc2ltaWxhciBmdW5jdGlvbnMKLQkJICoJICBkdWUgdG8gc2VjdXJpdHkgY29uY2VybnMsIGhlbmNlIHRoZSBmdW5jdGlvbl9leGlzdHMoKSBjaGVja3MKKwkJICoJICBkdWUgdG8gc2VjdXJpdHkgY29uY2VybnMsIGhlbmNlIHRoZSBmdW5jdGlvbl91c2FibGUoKSBjaGVja3MKIAkJICovCiAJCWlmIChESVJFQ1RPUllfU0VQQVJBVE9SICE9PSAnXFwnKQogCQl7CkBAIC0xMjIzLDcgKzEyMjMsNyBAQAogCQkJaWYgKGZ1bmN0aW9uX3VzYWJsZSgnZXhlYycpKQogCQkJewogCQkJCS8qIFRoaXMgbWlnaHQgbG9vayBjb25mdXNpbmcsIGFzICRtaW1lIGlzIGJlaW5nIHBvcHVsYXRlZCB3aXRoIGFsbCBvZiB0aGUgb3V0cHV0IHdoZW4gc2V0IGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLgotCQkJCSAqIEhvd2V2ZXIsIHdlIG9ubHkgbmVlZWQgdGhlIGxhc3QgbGluZSwgd2hpY2ggaXMgdGhlIGFjdHVhbCByZXR1cm4gdmFsdWUgb2YgZXhlYygpLCBhbmQgYXMgc3VjaCAtIGl0IG92ZXJ3cml0ZXMKKwkJCQkgKiBIb3dldmVyLCB3ZSBvbmx5IG5lZWQgdGhlIGxhc3QgbGluZSwgd2hpY2ggaXMgdGhlIGFjdHVhbCByZXR1cm4gdmFsdWUgb2YgZXhlYygpLCBhbmQgYXMgc3VjaCAtIGl0IG92ZXJ3cml0ZXMKIAkJCQkgKiBhbnl0aGluZyB0aGF0IGNvdWxkIGFscmVhZHkgYmUgc2V0IGZvciAkbWltZSBwcmV2aW91c2x5LiBUaGlzIGVmZmVjdGl2ZWx5IG1ha2VzIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGEgZHVtbXkKIAkJCQkgKiB2YWx1ZSwgd2hpY2ggaXMgb25seSBwdXQgdG8gYWxsb3cgdXMgdG8gZ2V0IHRoZSByZXR1cm4gc3RhdHVzIGNvZGUuCiAJCQkJICovCmRpZmYgLS1naXQgYS9zeXN0ZW0vbGlicmFyaWVzL1htbHJwY3MucGhwIGIvc3lzdGVtL2xpYnJhcmllcy9YbWxycGNzLnBocAppbmRleCBkNDUyNGQyLi5kMjYzZDc4IDEwMDY0NAotLS0gYS9zeXN0ZW0vbGlicmFyaWVzL1htbHJwY3MucGhwCisrKyBiL3N5c3RlbS9saWJyYXJpZXMvWG1scnBjcy5waHAKQEAgLTMxLDcgKzMxLDcgQEAKIAlzaG93X2Vycm9yKCdZb3VyIFBIUCBpbnN0YWxsYXRpb24gZG9lcyBub3Qgc3VwcG9ydCBYTUwnKTsKIH0KIAotaWYgKCAhIGNsYXNzX2V4aXN0cygnQ0lfWG1scnBjJykpCitpZiAoICEgY2xhc3NfZXhpc3RzKCdDSV9YbWxycGMnLCBGQUxTRSkpCiB7CiAJc2hvd19lcnJvcignWW91IG11c3QgbG9hZCB0aGUgWG1scnBjIGNsYXNzIGJlZm9yZSBsb2FkaW5nIHRoZSBYbWxycGNzIGNsYXNzIGluIG9yZGVyIHRvIGNyZWF0ZSBhIHNlcnZlci4nKTsKIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL2NvZGVpZ25pdGVyL2NvcmUvSW5wdXRfdGVzdC5waHAgYi90ZXN0cy9jb2RlaWduaXRlci9jb3JlL0lucHV0X3Rlc3QucGhwCmluZGV4IGNhMWM2ZGYuLjVjZjI1ZmUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NvZGVpZ25pdGVyL2NvcmUvSW5wdXRfdGVzdC5waHAKKysrIGIvdGVzdHMvY29kZWlnbml0ZXIvY29yZS9JbnB1dF90ZXN0LnBocApAQCAtOTUsOCArOTUsOCBAQAogCXB1YmxpYyBmdW5jdGlvbiB0ZXN0X2Nvb2tpZSgpCiAJewogCQkkX0NPT0tJRVsnZm9vJ10gPSAnYmFyJzsKLQogCQkkdGhpcy0+YXNzZXJ0RXF1YWxzKCdiYXInLCAkdGhpcy0+aW5wdXQtPmNvb2tpZSgnZm9vJykpOworCQkkdGhpcy0+YXNzZXJ0TnVsbCgkdGhpcy0+aW5wdXQtPmNvb2tpZSgnYmFyJykpOwogCX0KIAogCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMzgsNCArMTM4LDI3IEBACiAJCX0KIAl9CiAKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJcHVibGljIGZ1bmN0aW9uIHRlc3RfbWV0aG9kKCkKKwl7CisJCSRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddID0gJ0dFVCc7CisJCSR0aGlzLT5hc3NlcnRFcXVhbHMoJ2dldCcsICR0aGlzLT5pbnB1dC0+bWV0aG9kKCkpOworCQkkdGhpcy0+YXNzZXJ0RXF1YWxzKCdHRVQnLCAkdGhpcy0+aW5wdXQtPm1ldGhvZChUUlVFKSk7CisJCSRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddID0gJ1BPU1QnOworCQkkdGhpcy0+YXNzZXJ0RXF1YWxzKCdwb3N0JywgJHRoaXMtPmlucHV0LT5tZXRob2QoKSk7CisJCSR0aGlzLT5hc3NlcnRFcXVhbHMoJ1BPU1QnLCAkdGhpcy0+aW5wdXQtPm1ldGhvZChUUlVFKSk7CisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCXB1YmxpYyBmdW5jdGlvbiB0ZXN0X2lzX2FqYXhfcmVxdWVzdCgpCisJeworCQkkdGhpcy0+YXNzZXJ0RmFsc2UoJHRoaXMtPmlucHV0LT5pc19hamF4X3JlcXVlc3QoKSk7CisJCSRfU0VSVkVSWydIVFRQX1hfUkVRVUVTVEVEX1dJVEgnXSA9ICd0ZXN0JzsKKwkJJHRoaXMtPmFzc2VydEZhbHNlKCR0aGlzLT5pbnB1dC0+aXNfYWpheF9yZXF1ZXN0KCkpOworCQkkX1NFUlZFUlsnSFRUUF9YX1JFUVVFU1RFRF9XSVRIJ10gPSAnWE1MSHR0cFJlcXVlc3QnOworCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+aW5wdXQtPmlzX2FqYXhfcmVxdWVzdCgpKTsKKwl9CisKIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9jb2RlaWduaXRlci9jb3JlL091dHB1dF90ZXN0LnBocCBiL3Rlc3RzL2NvZGVpZ25pdGVyL2NvcmUvT3V0cHV0X3Rlc3QucGhwCmluZGV4IDcyOGRmM2IuLjBlZWI5M2YgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NvZGVpZ25pdGVyL2NvcmUvT3V0cHV0X3Rlc3QucGhwCisrKyBiL3Rlc3RzL2NvZGVpZ25pdGVyL2NvcmUvT3V0cHV0X3Rlc3QucGhwCkBAIC0zLDYgKzMsMTYgQEAKIGNsYXNzIE91dHB1dF90ZXN0IGV4dGVuZHMgQ0lfVGVzdENhc2UgewogCiAJcHVibGljICRvdXRwdXQ7CisJcHJvdGVjdGVkICRfb3V0cHV0X2RhdGEgPSA8PDxIVE1MCis8aHRtbD4KKwk8aGVhZD4KKwkJPHRpdGxlPkJhc2ljIEhUTUw8L3RpdGxlPgorCTwvaGVhZD4KKwk8Ym9keT4KKwkJVGVzdAorCTwvYm9keT4KKzwvaHRtbD4KK0hUTUw7CiAKIAlwdWJsaWMgZnVuY3Rpb24gc2V0X3VwKCkKIAl7CkBAIC0xMyw2ICsyMywzMSBAQAogCiAJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorCXB1YmxpYyBmdW5jdGlvbiB0ZXN0X3NldF9nZXRfYXBwZW5kX291dHB1dCgpCisJeworCQkkYXBwZW5kID0gIjwhLS0gY29tbWVudCAvLS0+XG4iOworCisJCSR0aGlzLT5hc3NlcnRFcXVhbHMoCisJCQkkdGhpcy0+X291dHB1dF9kYXRhLiRhcHBlbmQsCisJCQkkdGhpcy0+b3V0cHV0CisJCQkJLT5zZXRfb3V0cHV0KCR0aGlzLT5fb3V0cHV0X2RhdGEpCisJCQkJLT5hcHBlbmRfb3V0cHV0KCI8IS0tIGNvbW1lbnQgLy0tPlxuIikKKwkJCQktPmdldF9vdXRwdXQoKQorCQkpOworCX0KKworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlwdWJsaWMgZnVuY3Rpb24gdGVzdF9taW5pZnkoKQorCXsKKwkJJHRoaXMtPmFzc2VydEVxdWFscygKKwkJCXN0cl9yZXBsYWNlKGFycmF5KCJcdCIsICJcbiIpLCAnJywgJHRoaXMtPl9vdXRwdXRfZGF0YSksCisJCQkkdGhpcy0+b3V0cHV0LT5taW5pZnkoJHRoaXMtPl9vdXRwdXRfZGF0YSkKKwkJKTsKKwl9CisKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiAJcHVibGljIGZ1bmN0aW9uIHRlc3RfZ2V0X2NvbnRlbnRfdHlwZSgpCiAJewogCQkkdGhpcy0+YXNzZXJ0RXF1YWxzKCd0ZXh0L2h0bWwnLCAkdGhpcy0+b3V0cHV0LT5nZXRfY29udGVudF90eXBlKCkpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvY29kZWlnbml0ZXIvY29yZS9VdGY4X3Rlc3QucGhwIGIvdGVzdHMvY29kZWlnbml0ZXIvY29yZS9VdGY4X3Rlc3QucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYTdiNjkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9jb2RlaWduaXRlci9jb3JlL1V0ZjhfdGVzdC5waHAKQEAgLTAsMCArMSwyMCBAQAorPD9waHAKKworY2xhc3MgVXRmOF90ZXN0IGV4dGVuZHMgQ0lfVGVzdENhc2UgeworCisJcHVibGljIGZ1bmN0aW9uIHNldF91cCgpCisJeworCQkkdGhpcy0+dXRmOCA9IG5ldyBNb2NrX0NvcmVfVXRmOCgpOworCX0KKworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlwdWJsaWMgZnVuY3Rpb24gdGVzdF9jb252ZXJ0X3RvX3V0ZjgoKQorCXsKKwkJJHRoaXMtPmFzc2VydEVxdWFscygKKwkJCSR0aGlzLT51dGY4LT5jb252ZXJ0X3RvX3V0ZjgoJ/Ll8fInLCAnV0lORE9XUy0xMjUxJyksCisJCQkn0YLQtdGB0YInCisJCSk7CisJfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvY29kZWlnbml0ZXIvaGVscGVycy9mb3JtX2hlbHBlcl90ZXN0LnBocCBiL3Rlc3RzL2NvZGVpZ25pdGVyL2hlbHBlcnMvZm9ybV9oZWxwZXJfdGVzdC5waHAKaW5kZXggODkxNjUyNy4uZTIzNGY5YyAxMDA2NDQKLS0tIGEvdGVzdHMvY29kZWlnbml0ZXIvaGVscGVycy9mb3JtX2hlbHBlcl90ZXN0LnBocAorKysgYi90ZXN0cy9jb2RlaWduaXRlci9oZWxwZXJzL2Zvcm1faGVscGVyX3Rlc3QucGhwCkBAIC01OCw3ICs1OCw3IEBACiAJcHVibGljIGZ1bmN0aW9uIHRlc3RfZm9ybV91cGxvYWQoKQogCXsKIAkJJGV4cGVjdGVkID0gPDw8RU9ICi08aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0iYXR0YWNobWVudCIgdmFsdWU9IiIgIC8+Cis8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0iYXR0YWNobWVudCIgIC8+CiAKIEVPSDsKIApkaWZmIC0tZ2l0IGEvdGVzdHMvbW9ja3MvZGF0YWJhc2UvY2lfdGVzdC5zcWxpdGUgYi90ZXN0cy9tb2Nrcy9kYXRhYmFzZS9jaV90ZXN0LnNxbGl0ZQppbmRleCA0NGRjZWY5Li41NzRkM2FlIDEwMDc1NQotLS0gYS90ZXN0cy9tb2Nrcy9kYXRhYmFzZS9jaV90ZXN0LnNxbGl0ZQorKysgYi90ZXN0cy9tb2Nrcy9kYXRhYmFzZS9jaV90ZXN0LnNxbGl0ZQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy9tb2Nrcy9saWJyYXJpZXMvc2Vzc2lvbi5waHAgYi90ZXN0cy9tb2Nrcy9saWJyYXJpZXMvc2Vzc2lvbi5waHAKaW5kZXggNTYyMDMzYi4uYWRiZWNiMyAxMDA2NDQKLS0tIGEvdGVzdHMvbW9ja3MvbGlicmFyaWVzL3Nlc3Npb24ucGhwCisrKyBiL3Rlc3RzL21vY2tzL2xpYnJhcmllcy9zZXNzaW9uLnBocApAQCAtMzMsNCArMzMsNiBAQAogCQkJJF9DT09LSUVbJG5hbWVdID0gJHZhbHVlOwogCQl9CiAJfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KKworY2xhc3MgTW9ja19MaWJyYXJpZXNfU2Vzc2lvbl9uYXRpdmUgZXh0ZW5kcyBDSV9TZXNzaW9uX25hdGl2ZSB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VzZXJfZ3VpZGVfc3JjL3NvdXJjZS9jaGFuZ2Vsb2cucnN0IGIvdXNlcl9ndWlkZV9zcmMvc291cmNlL2NoYW5nZWxvZy5yc3QKaW5kZXggMmMyZGE2YS4uMDdkYWUxZiAxMDA2NDQKLS0tIGEvdXNlcl9ndWlkZV9zcmMvc291cmNlL2NoYW5nZWxvZy5yc3QKKysrIGIvdXNlcl9ndWlkZV9zcmMvc291cmNlL2NoYW5nZWxvZy5yc3QKQEAgLTYwLDEyICs2MCwxMSBAQAogLSAgSGVscGVycwogCiAgICAtICA6ZG9jOmBEYXRlIEhlbHBlciA8aGVscGVycy9kYXRlX2hlbHBlcj5gIGNoYW5nZXMgaW5jbHVkZToKLQkgLSBgYG5vdygpYGAgbm93IHdvcmtzIHdpdGggYWxsIHRpbWV6b25lIHN0cmluZ3Mgc3VwcG9ydGVkIGJ5IFBIUC4KLQkgLSBBZGRlZCBhbiBvcHRpb25hbCB0aGlyZCBwYXJhbWV0ZXIgdG8gYGB0aW1lc3BhbigpYGAgdGhhdCBjb25zdHJhaW5zIHRoZSBudW1iZXIgb2YgdGltZSB1bml0cyBkaXNwbGF5ZWQuCi0JIC0gQWRkZWQgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRvIGBgdGltZXpvbmVfbWVudSgpYGAgdGhhdCBhbGxvd3MgbW9yZSBhdHRyaWJ1dGVzIHRvIGJlIGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgc2VsZWN0IHRhZy4KKwkgLSA6cGhwOmZ1bmM6YG5vdygpYCBub3cgd29ya3Mgd2l0aCBhbGwgdGltZXpvbmUgc3RyaW5ncyBzdXBwb3J0ZWQgYnkgUEhQLgorCSAtIEFkZGVkIGFuIG9wdGlvbmFsIHRoaXJkIHBhcmFtZXRlciB0byA6cGhwOmZ1bmM6YHRpbWVzcGFuKClgIHRoYXQgY29uc3RyYWlucyB0aGUgbnVtYmVyIG9mIHRpbWUgdW5pdHMgZGlzcGxheWVkLgorCSAtIEFkZGVkIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0byA6cGhwOmZ1bmM6YHRpbWV6b25lX21lbnUoKWAgdGhhdCBhbGxvd3MgbW9yZSBhdHRyaWJ1dGVzIHRvIGJlIGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgc2VsZWN0IHRhZy4KIAkgLSBEZXByZWNhdGVkIGBgc3RhbmRhcmRfZGF0ZSgpYGAsIHdoaWNoIG5vdyBqdXN0IHVzZXMgdGhlIG5hdGl2ZSBgYGRhdGUoKWBgIHdpdGggYERhdGVUaW1lIGNvbnN0YW50cyA8aHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9jbGFzcy5kYXRldGltZS5waHAjZGF0ZXRpbWUuY29uc3RhbnRzLnR5cGVzPmBfLgotCSAtIEFkZGVkIGZ1bmN0aW9uIGBgZGF0ZV9yYW5nZSgpYGAgdGhhdCBnZW5lcmF0ZXMgYSBsaXN0IG9mIGRhdGVzIGJldHdlZW4gYSBzcGVjaWZpZWQgcGVyaW9kLgotICAgLSAgYGBjcmVhdGVfY2FwdGNoYSgpYGAgYWNjZXB0cyBhZGRpdGlvbmFsIGNvbG9ycyBwYXJhbWV0ZXIsIGFsbG93aW5nIGZvciBjb2xvciBjdXN0b21pemF0aW9uLgorCSAtIEFkZGVkIGZ1bmN0aW9uIDpwaHA6ZnVuYzpgZGF0ZV9yYW5nZSgpYCB0aGF0IGdlbmVyYXRlcyBhIGxpc3Qgb2YgZGF0ZXMgYmV0d2VlbiBhIHNwZWNpZmllZCBwZXJpb2QuCiAgICAtICA6ZG9jOmBVUkwgSGVscGVyIDxoZWxwZXJzL3VybF9oZWxwZXI+YCBjaGFuZ2VzIGluY2x1ZGU6CiAJIC0gRGVwcmVjYXRlZCAqc2VwYXJhdG9yKiBvcHRpb25zICoqZGFzaCoqIGFuZCAqKnVuZGVyc2NvcmUqKiBmb3IgZnVuY3Rpb24gOnBocDpmdW5jOmB1cmxfdGl0bGUoKWAgKHRoZXkgYXJlIG9ubHkgYWxpYXNlcyBmb3IgJy0nIGFuZCAnXycgcmVzcGVjdGl2ZWx5KS4KIAkgLSA6cGhwOmZ1bmM6YHVybF90aXRsZSgpYCB3aWxsIG5vdyB0cmltIGV4dHJhIGRhc2hlcyBmcm9tIGJlZ2lubmluZyBhbmQgZW5kLgpAQCAtMjQ0LDcgKzI0Myw2IEBACiAJIC0gIEFkZGVkIHN1cHBvcnQgZm9yIG5hbWVkIHBhcmFtZXRlcnMgaW4gZXJyb3IgbWVzc2FnZXMuCiAJIC0gIDpkb2M6YExhbmd1YWdlIDxsaWJyYXJpZXMvbGFuZ3VhZ2U+YCBsaW5lIGtleXMgbXVzdCBub3cgYmUgcHJlZml4ZWQgd2l0aCAqKmZvcm1fdmFsaWRhdGlvbl8qKi4KIAkgLSAgQWRkZWQgcnVsZSAqKmFscGhhX251bWVyaWNfc3BhY2VzKiouCi0JIC0gIEFkZGVkIG1ldGhvZCBgYGhhc19ydWxlKClgYCB0byBkZXRlcm1pbmUgaWYgYSBydWxlIGV4aXN0cy4KICAgIC0gIEFkZGVkIHN1cHBvcnQgZm9yIHNldHRpbmcgOmRvYzpgVGFibGUgPGxpYnJhcmllcy90YWJsZT5gIGNsYXNzIGRlZmF1bHRzIGluIGEgY29uZmlnIGZpbGUuCiAgICAtICA6ZG9jOmBDYWNoaW5nIExpYnJhcnkgPGxpYnJhcmllcy9jYWNoaW5nPmAgY2hhbmdlcyBpbmNsdWRlOgogCSAtICBBZGRlZCBXaW5jYWNoZSBkcml2ZXIuCkBAIC0zNDEsMTYgKzMzOSwxNSBAQAogCiAtICBGaXhlZCBhIGJ1ZyB3aGVyZSBgYHVubGluaygpYGAgcmFpc2VkIGFuIGVycm9yIGlmIGNhY2hlIGZpbGUgZGlkIG5vdCBleGlzdCB3aGVuIHlvdSB0cnkgdG8gZGVsZXRlIGl0LgogLSAgRml4ZWQgYSBidWcgKCMxODEpIHdoZXJlIGEgbWlzLXNwZWxsaW5nIHdhcyBpbiB0aGUgZm9ybSB2YWxpZGF0aW9uIGxhbmd1YWdlIGZpbGUuCi0tICBGaXhlZCBhIGJ1ZyAoIzE1OSwgIzE2MykgdGhhdCBtaXNoYW5kbGVkIFF1ZXJ5IEJ1aWxkZXIgbmVzdGVkIHRyYW5zYWN0aW9ucyBiZWNhdXNlIF90cmFuc19kZXB0aCB3YXMgbm90IGdldHRpbmcgaW5jcmVtZW50ZWQuCistICBGaXhlZCBhIGJ1ZyAoIzE1OSwgIzE2MykgLSA6ZG9jOmBRdWVyeSBCdWlsZGVyIDxkYXRhYmFzZS9xdWVyeV9idWlsZGVyPmAgbmVzdGVkIHRyYW5zYWN0aW9ucyBkaWRuJ3Qgd29yayBwcm9wZXJseSBkdWUgdG8gYGBfdHJhbnNfZGVwdGhgYCBub3QgYmVpbmcgaW5jcmVtZW50ZWQuCiAtICBGaXhlZCBhIGJ1ZyAoIzczNywgIzc1KSAtIDpkb2M6YFBhZ2luYXRpb24gPGxpYnJhcmllcy9wYWdpbmF0aW9uPmAgYW5jaG9yIGNsYXNzIHdhcyBub3Qgc2V0IHByb3Blcmx5IHdoZW4gdXNpbmcgaW5pdGlhbGl6ZSBtZXRob2QuCi0tICBGaXhlZCBhIGJ1ZyAoIzQxOSkgLSBgYGF1dG9fbGluaygpYGAgbm93IHJlY29nbml6ZXMgVVJMcyB0aGF0IGNvbWUgYWZ0ZXIgYSB3b3JkIGJvdW5kYXJ5LgorLSAgRml4ZWQgYSBidWcgKCM0MTkpIC0gOnBocDpmdW5jOmBhdXRvX2xpbmsoKWAgZGlkbid0IHJlY29nbml6ZSBVUkxzIHRoYXQgY29tZSBhZnRlciBhIHdvcmQgYm91bmRhcnkuCiAtICBGaXhlZCBhIGJ1ZyAoIzcyNCkgLSA6ZG9jOmBGb3JtIFZhbGlkYXRpb24gTGlicmFyeSA8bGlicmFyaWVzL2Zvcm1fdmFsaWRhdGlvbj5gIHJ1bGUgKippc191bmlxdWUqKiBkaWRuJ3QgY2hlY2sgaWYgYSBkYXRhYmFzZSBjb25uZWN0aW9uIGV4aXN0cy4KIC0gIEZpeGVkIGEgYnVnICgjNjQ3KSAtIDpkb2M6YFppcCBMaWJyYXJ5IDxsaWJyYXJpZXMvemlwPmAgaW50ZXJuYWwgbWV0aG9kIGBgX2dldF9tb2RfdGltZSgpYGAgZGlkbid0IHN1cHByZXNzIHBvc3NpYmxlICJzdGF0IGZhaWxlZCIgZXJyb3JzIGdlbmVyYXRlZCBieSBgYGZpbGVtdGltZSgpYGAuCi0tICBGaXhlZCBhIGJ1ZyAoIzYwOCkgLSBGaXhlcyBhbiBpc3N1ZSB3aXRoIHRoZSBJbWFnZV9saWIgY2xhc3Mgbm90IGNsZWFyaW5nIHByb3BlcnRpZXMgY29tcGxldGVseS4KLS0gIEZpeGVkIGEgYnVnICgjMTU3LCAjMTc0KSAtIHRoZSBJbWFnZV9saWIgY2xlYXIoKSBmdW5jdGlvbiBub3cgcmVzZXRzIGFsbCB2YXJpYWJsZXMgdG8gdGhlaXIgZGVmYXVsdCB2YWx1ZXMuCi0tICBGaXhlZCBhIGJ1ZyB3aGVyZSB1c2luZyAkdGhpcy0+ZGJmb3JnZS0+Y3JlYXRlX3RhYmxlKCkgd2l0aCBQb3N0Z3JlU1FMIGRhdGFiYXNlIGNvdWxkIGxlYWQgdG8gZmV0Y2hpbmcgd2hvbGUgdGFibGUuCi0tICBGaXhlZCBhIGJ1ZyAoIzc5NSkgLSBGaXhlZCBmb3JtIG1ldGhvZCBhbmQgYWNjZXB0LWNoYXJzZXQgd2hlbiBwYXNzaW5nIGFuIGVtcHR5IGFycmF5LgotLSAgRml4ZWQgYSBidWcgKCM3OTcpIC0gdGltZXNwYW4oKSB3YXMgdXNpbmcgaW5jb3JyZWN0IHNlY29uZHMgZm9yIHllYXIgYW5kIG1vbnRoLgorLSAgRml4ZWQgYSBidWcgKCMxNTcsICMxNzQpIC0gOmRvYzpgSW1hZ2UgTWFuaXB1bGF0aW9uIExpYnJhcnkgPGxpYnJhcmllcy9pbWFnZV9saWI+YCBtZXRob2QgYGBjbGVhcigpYGAgZGlkbid0IGNvbXBsZXRlbHkgY2xlYXIgcHJvcGVydGllcy4KKy0gIEZpeGVkIGEgYnVnIHdoZXJlIDpkb2M6YERhdGFiYXNlIEZvcmdlIDxkYXRhYmFzZS9mb3JnZT5gIG1ldGhvZCBgYGNyZWF0ZV90YWJsZSgpYGAgd2l0aCBQb3N0Z3JlU1FMIGRhdGFiYXNlIGNvdWxkIGxlYWQgdG8gZmV0Y2hpbmcgdGhlIHdob2xlIHRhYmxlLgorLSAgRml4ZWQgYSBidWcgKCM3OTUpIC0gOmRvYzpgRm9ybSBIZWxwZXIgPGhlbHBlcnMvZm9ybV9oZWxwZXI+YCA6cGhwOmZ1bmM6YGZvcm1fb3BlbigpYCBkaWRuJ3QgYWRkIHRoZSBkZWZhdWx0IGZvcm0gKm1ldGhvZCogYW5kICphY2NlcHQtY2hhcnNldCogd2hlbiBhbiBlbXB0eSBhcnJheSBpcyBwYXNzZWQgdG8gaXQuCistICBGaXhlZCBhIGJ1ZyAoIzc5NykgLSA6cGhwOmZ1bmM6YHRpbWVzcGFuKClgIHdhcyB1c2luZyBpbmNvcnJlY3Qgc2Vjb25kcyBmb3IgeWVhciBhbmQgbW9udGguCiAtICBGaXhlZCBhIGJ1ZyBpbiBDSV9DYXJ0Ojpjb250ZW50cygpIHdoZXJlIGlmIGNhbGxlZCB3aXRob3V0IGEgVFJVRSAob3IgZXF1YWwpIHBhcmFtZXRlciwgaXQgd291bGQgZmFpbCBkdWUgdG8gYSB0eXBvLgogLSAgRml4ZWQgYSBidWcgKCM2OTYpIC0gbWFrZSBvY2lfZXhlY3V0ZSgpIGNhbGxzIGluc2lkZSBudW1fcm93cygpIG5vbi1jb21taXR0aW5nLCBzaW5jZSB0aGV5IGFyZSBvbmx5IHRoZXJlIHRvIHJlc2V0IHdoaWNoIHJvdyBpcyBuZXh0IGluIGxpbmUgZm9yIG9jaV9mZXRjaCBjYWxscyBhbmQgdGh1cyBkb24ndCBuZWVkIHRvIGJlIGNvbW1pdHRlZC4KIC0gIEZpeGVkIGEgYnVnICgjNDA2KSAtIFNRTFNSViBEQiBkcml2ZXIgbm90IHJldHVybmluZyByZXNvdXJjZSBvbiBgYGRiX3Bjb25uZWN0KClgYC4KQEAgLTQ2NCw3ICs0NjEsNyBAQAogLSAgRml4ZWQgYSBidWcgKCMxMjU1KSAtIDpkb2M6YFVzZXIgQWdlbnQgTGlicmFyeSA8bGlicmFyaWVzL3VzZXJfYWdlbnQ+YCBtZXRob2QgYGBpc19yZWZlcnJhbCgpYGAgb25seSBjaGVja2VkIGlmIGBgJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddYGAgZXhpc3RzLgogLSAgRml4ZWQgYSBidWcgKCMxMTQ2KSAtIDpkb2M6YERvd25sb2FkIEhlbHBlciA8aGVscGVycy9kb3dubG9hZF9oZWxwZXI+YCBmdW5jdGlvbiBgYGZvcmNlX2Rvd25sb2FkKClgYCBpbmNvcnJlY3RseSBzZW50ICpDYWNoZS1Db250cm9sKiBkaXJlY3RpdmVzICpwcmUtY2hlY2sqIGFuZCAqcG9zdC1jaGVjayogdG8gSW50ZXJuZXQgRXhwbG9yZXIuCiAtICBGaXhlZCBhIGJ1ZyAoIzE4MTEpIC0gOmRvYzpgVVJJIExpYnJhcnkgPGxpYnJhcmllcy91cmk+YCBkaWRuJ3QgcHJvcGVybHkgY2FjaGUgc2VnbWVudHMgZm9yIGBgdXJpX3RvX2Fzc29jKClgYCBhbmQgYGBydXJpX3RvX2Fzc29jKClgYC4KLS0gIEZpeGVkIGEgYnVnICgjMTUwNikgLSA6ZG9jOmBGb3JtIEhlbHBlciA8aGVscGVycy9mb3JtX2hlbHBlcj5gIHNldCBlbXB0eSAqbmFtZSogYXR0cmlidXRlcy4KKy0gIEZpeGVkIGEgYnVnICgjMTUwNikgLSA6ZG9jOmBGb3JtIEhlbHBlcnMgPGhlbHBlcnMvZm9ybV9oZWxwZXI+YCBzZXQgZW1wdHkgKm5hbWUqIGF0dHJpYnV0ZXMuCiAtICBGaXhlZCBhIGJ1ZyAoIzU5KSAtIDpkb2M6YFF1ZXJ5IEJ1aWxkZXIgPGRhdGFiYXNlL3F1ZXJ5X2J1aWxkZXI+YCBtZXRob2QgYGBjb3VudF9hbGxfcmVzdWx0cygpYGAgaWdub3JlZCB0aGUgRElTVElOQ1QgY2xhdXNlLgogLSAgRml4ZWQgYSBidWcgKCMxNjI0KSAtIDpkb2M6YEZvcm0gVmFsaWRhdGlvbiBMaWJyYXJ5IDxsaWJyYXJpZXMvZm9ybV92YWxpZGF0aW9uPmAgcnVsZSAqKm1hdGNoZXMqKiBkaWRuJ3QgcHJvcGVydHkgaGFuZGxlIGFycmF5IGZpZWxkIG5hbWVzLgogLSAgRml4ZWQgYSBidWcgKCMxNjMwKSAtIDpkb2M6YEZvcm0gSGVscGVyIDxoZWxwZXJzL2Zvcm1faGVscGVyPmAgZnVuY3Rpb24gYGBzZXRfdmFsdWUoKWBgIGRpZG4ndCBlc2NhcGUgSFRNTCBlbnRpdGllcy4KQEAgLTQ4Nyw5ICs0ODQsMTAgQEAKIC0gIEZpeGVkIGEgYnVnIC0gOmRvYzpgREIgcmVzdWx0IDxkYXRhYmFzZS9yZXN1bHRzPmAgbWV0aG9kIGBgbGlzdF9maWVsZHMoKWBgIGRpZG4ndCByZXNldCBpdHMgZmllbGQgcG9pbnRlciBmb3IgdGhlICpteXNxbCosICpteXNxbGkqIGFuZCAqbXNzcWwqIGRyaXZlcnMuCiAtICBGaXhlZCBhIGJ1ZyAoIzczKSAtIDpkb2M6YFNlY3VyaXR5IExpYnJhcnkgPGxpYnJhcmllcy9zZWN1cml0eT5gIG1ldGhvZCBgYHNhbml0aXplX2ZpbGVuYW1lKClgYCBjb3VsZCBiZSB0cmlja2VkIGJ5IGFuIFhTUyBhdHRhY2suCiAtICBGaXhlZCBhIGJ1ZyAoIzIyMTEpIC0gOmRvYzpgTWlncmF0aW9uIExpYnJhcnkgPGxpYnJhcmllcy9taWdyYXRpb24+YCBleHRlbnNpb25zIGNvdWxkbid0IGV4ZWN1dGUgYGBDSV9NaWdyYXRpb246Ol9fY29uc3RydWN0KClgYC4KLS0gIEZpeGVkIGEgYnVnICgjMjI1NSkgd2hlcmUgYGBzbXRwX3RpbWVvdXRgYCB3YXMgbm90IGJlaW5nIGFwcGxpZWQgdG8gcmVhZCBhbmQgd3JpdGVzIGZvciB0aGUgc29ja2V0LgotLSAgRml4ZWQgYSBidWcgKCMyMjM5KSBvZiBtaXNzaW5nIHN1YmplY3Qgd2hlbiB1c2luZyBgYGJjY19iYXRjaF9tb2RlYGAuCi0tICBGaXhlZCBhIGJ1ZyAoIzIyMzYpIC0gOmRvYzpgRm9ybSBIZWxwZXIgPGhlbHBlcnMvZm9ybV9oZWxwZXI+YCBpbmNvcnJlY3RseSBkZXRlcm1pbmVkIHRoZSB2YWx1ZSB0byByZXR1cm4gaW4gbWV0aG9kIGBgc2V0X3ZhbHVlKClgYC4KKy0gIEZpeGVkIGEgYnVnICgjMjI1NSkgLSA6ZG9jOmBFbWFpbCBMaWJyYXJ5IDxsaWJyYXJpZXMvZW1haWw+YCBkaWRuJ3QgYXBwbHkgYGBzbXRwX3RpbWVvdXRgYHRvIHNvY2tldCByZWFkcyBhbmQgd3JpdGVzLgorLSAgRml4ZWQgYSBidWcgKCMyMjM5KSAtIDpkb2M6YEVtYWlsIExpYnJhcnkgPGxpYnJhcmllcy9lbWFpbD5gIGltcHJvcGVybHkgaGFuZGxlZCB0aGUgU3ViamVjdCB3aGVuIHVzZWQgd2l0aCBgYGJjY19iYXRjaF9tb2RlYGAgcmVzdWx0aW5nIGluIEVfV0FSTklORyBtZXNzYWdlcyBhbmQgYW4gZW1wdHkgU3ViamVjdC4KKy0gIEZpeGVkIGEgYnVnICgjMjIzNCkgLSA6ZG9jOmBRdWVyeSBCdWlsZGVyIDxkYXRhYmFzZS9xdWVyeV9idWlsZGVyPmAgZGlkbid0IHJlc2V0IEpPSU4gY2FjaGUgZm9yIHdyaXRlLXR5cGUgcXVlcmllcy4KKy0gIEZpeGVkIGEgYnVnICgjMjI5OCkgLSA6ZG9jOmBEYXRhYmFzZSBSZXN1bHRzIDxkYXRhYmFzZS9yZXN1bHRzPmAgbWV0aG9kIGBuZXh0X3JvdygpYCBrZXB0IHJldHVybmluZyB0aGUgbGFzdCByb3csIGFsbG93aW5nIGZvciBpbmZpbml0ZSBsb29wcy4KIAogVmVyc2lvbiAyLjEuMwogPT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvdXNlcl9ndWlkZV9zcmMvc291cmNlL2dlbmVyYWwvc3R5bGVndWlkZS5yc3QgYi91c2VyX2d1aWRlX3NyYy9zb3VyY2UvZ2VuZXJhbC9zdHlsZWd1aWRlLnJzdAppbmRleCA5OWJjMDU2Li4xNDRiMzYyIDEwMDY0NAotLS0gYS91c2VyX2d1aWRlX3NyYy9zb3VyY2UvZ2VuZXJhbC9zdHlsZWd1aWRlLnJzdAorKysgYi91c2VyX2d1aWRlX3NyYy9zb3VyY2UvZ2VuZXJhbC9zdHlsZWd1aWRlLnJzdApAQCAtMyw4ICszLDEwIEBACiAjIyMjIyMjIyMjIyMjIyMKIAogCi1UaGUgZm9sbG93aW5nIHBhZ2UgZGVzY3JpYmVzIHRoZSB1c2Ugb2YgY29kaW5nIHJ1bGVzIGFkaGVyZWQgdG8gd2hlbgotZGV2ZWxvcGluZyBDb2RlSWduaXRlci4KK1RoZSBmb2xsb3dpbmcgcGFnZSBkZXNjcmliZXMgdGhlIGNvZGluZyBzdHlsZXMgYWRoZXJlZCB0byB3aGVuCitjb250cmlidXRpbmcgdG8gdGhlIGRldmVsb3BtZW50IG9mIENvZGVJZ25pdGVyLiBUaGVyZSBpcyBubyByZXF1aXJlbWVudAordG8gdXNlIHRoZXNlIHN0eWxlcyBpbiB5b3VyIG93biBDb2RlSWduaXRlciBhcHBsaWNhdGlvbiwgdGhvdWdoIHRoZXkKK2FyZSByZWNvbW1lbmRlZC4KIAogLi4gY29udGVudHM6OiBUYWJsZSBvZiBDb250ZW50cwogCkBAIC03MiwxNCArNzQsMTUgQEAKIAkvKiBFbmQgb2YgZmlsZSBteWZpbGUucGhwICovCiAJLyogTG9jYXRpb246IC4vc3lzdGVtL21vZHVsZXMvbXltb2R1bGUvbXlmaWxlLnBocCAqLwogCisuLiBub3RlOjogVGhlcmUgc2hvdWxkIGJlIG5vIGVtcHR5IGxpbmUgb3IgbmV3bGluZSBjaGFyYWN0ZXIocykgZm9sbG93aW5nCisJdGhlIGNsb3NpbmcgY29tbWVudHMuIElmIHlvdSBoYXBwZW4gdG8gc2VlIG9uZSB3aGVuCisJc3VibWl0dGluZyBhIHB1bGwgcmVxdWVzdCwgcGxlYXNlIGNoZWNrIHlvdXIgSURFIHNldHRpbmdzIGFuZCBmaXggaXQuCisKIENsYXNzIGFuZCBNZXRob2QgTmFtaW5nCiA9PT09PT09PT09PT09PT09PT09PT09PQogCiBDbGFzcyBuYW1lcyBzaG91bGQgYWx3YXlzIHN0YXJ0IHdpdGggYW4gdXBwZXJjYXNlIGxldHRlci4gTXVsdGlwbGUgd29yZHMKLXNob3VsZCBiZSBzZXBhcmF0ZWQgd2l0aCBhbiB1bmRlcnNjb3JlLCBhbmQgbm90IENhbWVsQ2FzZWQuIEFsbCBvdGhlcgotY2xhc3MgbWV0aG9kcyBzaG91bGQgYmUgZW50aXJlbHkgbG93ZXJjYXNlZCBhbmQgbmFtZWQgdG8gY2xlYXJseQotaW5kaWNhdGUgdGhlaXIgZnVuY3Rpb24sIHByZWZlcmFibHkgaW5jbHVkaW5nIGEgdmVyYi4gVHJ5IHRvIGF2b2lkCi1vdmVybHkgbG9uZyBhbmQgdmVyYm9zZSBuYW1lcy4KK3Nob3VsZCBiZSBzZXBhcmF0ZWQgd2l0aCBhbiB1bmRlcnNjb3JlLCBhbmQgbm90IENhbWVsQ2FzZWQuCiAKICoqSU5DT1JSRUNUKio6OgogCkBAIC0xMDAsNyArMTAzLDEwIEBACiAJCX0KIAl9CiAKLUV4YW1wbGVzIG9mIGltcHJvcGVyIGFuZCBwcm9wZXIgbWV0aG9kIG5hbWluZzoKK0NsYXNzIG1ldGhvZHMgc2hvdWxkIGJlIGVudGlyZWx5IGxvd2VyY2FzZWQgYW5kIG5hbWVkIHRvIGNsZWFybHkKK2luZGljYXRlIHRoZWlyIGZ1bmN0aW9uLCBwcmVmZXJhYmx5IGluY2x1ZGluZyBhIHZlcmIuIFRyeSB0byBhdm9pZAorb3Zlcmx5IGxvbmcgYW5kIHZlcmJvc2UgbmFtZXMuIE11bHRpcGxlIHdvcmRzIHNob3VsZCBiZSBzZXBhcmF0ZWQKK3dpdGggYW4gdW5kZXJzY29yZS4KIAogKipJTkNPUlJFQ1QqKjo6CiAKQEAgLTExNyw4ICsxMjMsOCBAQAogVmFyaWFibGUgTmFtZXMKID09PT09PT09PT09PT09CiAKLVRoZSBndWlkZWxpbmVzIGZvciB2YXJpYWJsZSBuYW1pbmcgaXMgdmVyeSBzaW1pbGFyIHRvIHRoYXQgdXNlZCBmb3IKLWNsYXNzIG1ldGhvZHMuIE5hbWVseSwgdmFyaWFibGVzIHNob3VsZCBjb250YWluIG9ubHkgbG93ZXJjYXNlIGxldHRlcnMsCitUaGUgZ3VpZGVsaW5lcyBmb3IgdmFyaWFibGUgbmFtaW5nIGFyZSB2ZXJ5IHNpbWlsYXIgdG8gdGhvc2UgdXNlZCBmb3IKK2NsYXNzIG1ldGhvZHMuIFZhcmlhYmxlcyBzaG91bGQgY29udGFpbiBvbmx5IGxvd2VyY2FzZSBsZXR0ZXJzLAogdXNlIHVuZGVyc2NvcmUgc2VwYXJhdG9ycywgYW5kIGJlIHJlYXNvbmFibHkgbmFtZWQgdG8gaW5kaWNhdGUgdGhlaXIKIHB1cnBvc2UgYW5kIGNvbnRlbnRzLiBWZXJ5IHNob3J0LCBub24td29yZCB2YXJpYWJsZXMgc2hvdWxkIG9ubHkgYmUgdXNlZAogYXMgaXRlcmF0b3JzIGluIGZvcigpIGxvb3BzLgpAQCAtMjQyLDEwICsyNDgsMTAgQEAKIExvZ2ljYWwgT3BlcmF0b3JzCiA9PT09PT09PT09PT09PT09PQogCi1Vc2Ugb2YgKipcfFx8KiogaXMgZGlzY291cmFnZWQgYXMgaXRzIGNsYXJpdHkgb24gc29tZSBvdXRwdXQgZGV2aWNlcyBpcwotbG93IChsb29raW5nIGxpa2UgdGhlIG51bWJlciAxMSBmb3IgaW5zdGFuY2UpLiAqKiYmKiogaXMgcHJlZmVycmVkIG92ZXIKLSoqQU5EKiogYnV0IGVpdGhlciBhcmUgYWNjZXB0YWJsZSwgYW5kIGEgc3BhY2Ugc2hvdWxkIGFsd2F5cyBwcmVjZWRlIGFuZAotZm9sbG93ICoqISoqLgorVXNlIG9mIHRoZSBgYHx8YGAgIm9yIiBjb21wYXJpc29uIG9wZXJhdG9yIGlzIGRpc2NvdXJhZ2VkLCBhcyBpdHMgY2xhcml0eQorb24gc29tZSBvdXRwdXQgZGV2aWNlcyBpcyBsb3cgKGxvb2tpbmcgbGlrZSB0aGUgbnVtYmVyIDExLCBmb3IgaW5zdGFuY2UpLgorYGAmJmBgIGlzIHByZWZlcnJlZCBvdmVyIGBgQU5EYGAgYnV0IGVpdGhlciBhcmUgYWNjZXB0YWJsZSwgYW5kIGEgc3BhY2Ugc2hvdWxkCithbHdheXMgcHJlY2VkZSBhbmQgZm9sbG93IGBgIWBgLgogCiAqKklOQ09SUkVDVCoqOjoKIApAQCAtMzE4LDE0ICszMjQsOSBAQAogRGVidWdnaW5nIENvZGUKID09PT09PT09PT09PT09CiAKLU5vIGRlYnVnZ2luZyBjb2RlIGNhbiBiZSBsZWZ0IGluIHBsYWNlIGZvciBzdWJtaXR0ZWQgYWRkLW9ucyB1bmxlc3MgaXQKLWlzIGNvbW1lbnRlZCBvdXQsIGkuZS4gbm8gdmFyX2R1bXAoKSwgcHJpbnRfcigpLCBkaWUoKSwgYW5kIGV4aXQoKQotY2FsbHMgdGhhdCB3ZXJlIHVzZWQgd2hpbGUgY3JlYXRpbmcgdGhlIGFkZC1vbiwgdW5sZXNzIHRoZXkgYXJlCi1jb21tZW50ZWQgb3V0LgotCi06OgotCi0JLy8gcHJpbnRfcigkZm9vKTsKK0RvIG5vdCBsZWF2ZSBkZWJ1Z2dpbmcgY29kZSBpbiB5b3VyIHN1Ym1pc3Npb25zLCBldmVuIHdoZW4gY29tbWVudGVkIG91dC4KK1RoaW5ncyBzdWNoIGFzIGBgdmFyX2R1bXAoKWBgLCBgYHByaW50X3IoKWBgLCBgYGRpZSgpYGAvYGBleGl0KClgYCBzaG91bGQgbm90IGJlIGluY2x1ZGVkCitpbiB5b3VyIGNvZGUgdW5sZXNzIGl0IHNlcnZlcyBhIHNwZWNpZmljIHB1cnBvc2Ugb3RoZXIgdGhhbiBkZWJ1Z2dpbmcuCiAKIFdoaXRlc3BhY2UgaW4gRmlsZXMKID09PT09PT09PT09PT09PT09PT0KQEAgLTMzMyw3MyArMzM0LDI2IEBACiBObyB3aGl0ZXNwYWNlIGNhbiBwcmVjZWRlIHRoZSBvcGVuaW5nIFBIUCB0YWcgb3IgZm9sbG93IHRoZSBjbG9zaW5nIFBIUAogdGFnLiBPdXRwdXQgaXMgYnVmZmVyZWQsIHNvIHdoaXRlc3BhY2UgaW4geW91ciBmaWxlcyBjYW4gY2F1c2Ugb3V0cHV0IHRvCiBiZWdpbiBiZWZvcmUgQ29kZUlnbml0ZXIgb3V0cHV0cyBpdHMgY29udGVudCwgbGVhZGluZyB0byBlcnJvcnMgYW5kIGFuCi1pbmFiaWxpdHkgZm9yIENvZGVJZ25pdGVyIHRvIHNlbmQgcHJvcGVyIGhlYWRlcnMuIEluIHRoZSBleGFtcGxlcyBiZWxvdywKLXNlbGVjdCB0aGUgdGV4dCB3aXRoIHlvdXIgbW91c2UgdG8gcmV2ZWFsIHRoZSBpbmNvcnJlY3Qgd2hpdGVzcGFjZS4KK2luYWJpbGl0eSBmb3IgQ29kZUlnbml0ZXIgdG8gc2VuZCBwcm9wZXIgaGVhZGVycy4KIAogQ29tcGF0aWJpbGl0eQogPT09PT09PT09PT09PQogCi1Vbmxlc3Mgc3BlY2lmaWNhbGx5IG1lbnRpb25lZCBpbiB5b3VyIGFkZC1vbidzIGRvY3VtZW50YXRpb24sIGFsbCBjb2RlCi1tdXN0IGJlIGNvbXBhdGlibGUgd2l0aCBQSFAgdmVyc2lvbiA1LjErLiBBZGRpdGlvbmFsbHksIGRvIG5vdCB1c2UgUEhQCi1mdW5jdGlvbnMgdGhhdCByZXF1aXJlIG5vbi1kZWZhdWx0IGxpYnJhcmllcyB0byBiZSBpbnN0YWxsZWQgdW5sZXNzIHlvdXIKLWNvZGUgY29udGFpbnMgYW4gYWx0ZXJuYXRpdmUgbWV0aG9kIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIG5vdCBhdmFpbGFibGUsCi1vciB5b3UgaW1wbGljaXRseSBkb2N1bWVudCB0aGF0IHlvdXIgYWRkLW9uIHJlcXVpcmVzIHNhaWQgUEhQIGxpYnJhcmllcy4KK0NvZGVJZ25pdGVyIHJlcXVpcmVzIGEgbWluaW11bSBQSFAgdmVyc2lvbiBvZiA1LjIuNC4gWW91ciBjb2RlIG11c3QgZWl0aGVyCitiZSBjb21wYXRpYmxlIHdpdGggdGhpcyBtaW5pbXVtIHJlcXVpcmVtZW50LCBwcm92aWRlIGEgc3VpdGFibGUgZmFsbGJhY2ssCitvciBiZSBhbiBvcHRpb25hbCBmZWF0dXJlIHRoYXQgZGllcyBxdWlldGx5IHdpdGhvdXQgYWZmZWN0aW5nIGEgdXNlcidzCithcHBsaWNhdGlvbi4KIAotQ2xhc3MgYW5kIEZpbGUgTmFtZXMgdXNpbmcgQ29tbW9uIFdvcmRzCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotV2hlbiB5b3VyIGNsYXNzIG9yIGZpbGVuYW1lIGlzIGEgY29tbW9uIHdvcmQsIG9yIG1pZ2h0IHF1aXRlIGxpa2VseSBiZQotaWRlbnRpY2FsbHkgbmFtZWQgaW4gYW5vdGhlciBQSFAgc2NyaXB0LCBwcm92aWRlIGEgdW5pcXVlIHByZWZpeCB0byBoZWxwCi1wcmV2ZW50IGNvbGxpc2lvbi4gQWx3YXlzIHJlYWxpemUgdGhhdCB5b3VyIGVuZCB1c2VycyBtYXkgYmUgcnVubmluZwotb3RoZXIgYWRkLW9ucyBvciB0aGlyZCBwYXJ0eSBQSFAgc2NyaXB0cy4gQ2hvb3NlIGEgcHJlZml4IHRoYXQgaXMgdW5pcXVlCi10byB5b3VyIGlkZW50aXR5IGFzIGEgZGV2ZWxvcGVyIG9yIGNvbXBhbnkuCi0KLSoqSU5DT1JSRUNUKio6OgotCi0JY2xhc3MgRW1haWwJCXBpLmVtYWlsLnBocAotCWNsYXNzIFhtbAkJZXh0LnhtbC5waHAKLQljbGFzcyBJbXBvcnQJbW9kLmltcG9ydC5waHAKLQotKipDT1JSRUNUKio6OgotCi0JY2xhc3MgUHJlX2VtYWlsCQlwaS5wcmVfZW1haWwucGhwCi0JY2xhc3MgUHJlX3htbAkJZXh0LnByZV94bWwucGhwCi0JY2xhc3MgUHJlX2ltcG9ydAltb2QucHJlX2ltcG9ydC5waHAKLQotRGF0YWJhc2UgVGFibGUgTmFtZXMKLT09PT09PT09PT09PT09PT09PT09Ci0KLUFueSB0YWJsZXMgdGhhdCB5b3VyIGFkZC1vbiBtaWdodCB1c2UgbXVzdCB1c2UgdGhlICdleHBcXycgcHJlZml4LAotZm9sbG93ZWQgYnkgYSBwcmVmaXggdW5pcXVlbHkgaWRlbnRpZnlpbmcgeW91IGFzIHRoZSBkZXZlbG9wZXIgb3IKLWNvbXBhbnksIGFuZCB0aGVuIGEgc2hvcnQgZGVzY3JpcHRpdmUgdGFibGUgbmFtZS4gWW91IGRvIG5vdCBuZWVkIHRvIGJlCi1jb25jZXJuZWQgYWJvdXQgdGhlIGRhdGFiYXNlIHByZWZpeCBiZWluZyB1c2VkIG9uIHRoZSB1c2VyJ3MKLWluc3RhbGxhdGlvbiwgYXMgQ29kZUlnbml0ZXIncyBkYXRhYmFzZSBjbGFzcyB3aWxsIGF1dG9tYXRpY2FsbHkgY29udmVydAotJ2V4cFxfJyB0byB3aGF0IGlzIGFjdHVhbGx5IGJlaW5nIHVzZWQuCi0KLSoqSU5DT1JSRUNUKio6OgotCi0JZW1haWxfYWRkcmVzc2VzCQkvLyBtaXNzaW5nIGJvdGggcHJlZml4ZXMKLQlwcmVfZW1haWxfYWRkcmVzc2VzCS8vIG1pc3NpbmcgZXhwXyBwcmVmaXgKLQlleHBfZW1haWxfYWRkcmVzc2VzCS8vIG1pc3NpbmcgdW5pcXVlIHByZWZpeAotCi0qKkNPUlJFQ1QqKjo6Ci0KLQlleHBfcHJlX2VtYWlsX2FkZHJlc3NlcwotCi0uLiBub3RlOjogQmUgbWluZGZ1bCB0aGF0IE15U1FMIGhhcyBhIGxpbWl0IG9mIDY0IGNoYXJhY3RlcnMgZm9yIHRhYmxlCi0JbmFtZXMuIFRoaXMgc2hvdWxkIG5vdCBiZSBhbiBpc3N1ZSBhcyB0YWJsZSBuYW1lcyB0aGF0IHdvdWxkIGV4Y2VlZCB0aGlzCi0Jd291bGQgbGlrZWx5IGhhdmUgdW5yZWFzb25hYmxlIG5hbWVzLiBGb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgdGFibGUKLQluYW1lIGV4Y2VlZHMgdGhpcyBsaW1pdGF0aW9uIGJ5IG9uZSBjaGFyYWN0ZXIuIFNpbGx5LCBubz8KLQkqKmV4cF9wcmVfZW1haWxfYWRkcmVzc2VzX29mX3JlZ2lzdGVyZWRfdXNlcnNfaW5fc2VhdHRsZV93YXNoaW5ndG9uKioKK0FkZGl0aW9uYWxseSwgZG8gbm90IHVzZSBQSFAgZnVuY3Rpb25zIHRoYXQgcmVxdWlyZSBub24tZGVmYXVsdCBsaWJyYXJpZXMKK3RvIGJlIGluc3RhbGxlZCB1bmxlc3MgeW91ciBjb2RlIGNvbnRhaW5zIGFuIGFsdGVybmF0aXZlIG1ldGhvZCB3aGVuIHRoZQorZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZS4KIAogT25lIEZpbGUgcGVyIENsYXNzCiA9PT09PT09PT09PT09PT09PT0KIAotVXNlIHNlcGFyYXRlIGZpbGVzIGZvciBlYWNoIGNsYXNzIHlvdXIgYWRkLW9uIHVzZXMsIHVubGVzcyB0aGUgY2xhc3NlcwotYXJlICpjbG9zZWx5IHJlbGF0ZWQqLiBBbiBleGFtcGxlIG9mIENvZGVJZ25pdGVyIGZpbGVzIHRoYXQgY29udGFpbnMKLW11bHRpcGxlIGNsYXNzZXMgaXMgdGhlIERhdGFiYXNlIGNsYXNzIGZpbGUsIHdoaWNoIGNvbnRhaW5zIGJvdGggdGhlIERCCi1jbGFzcyBhbmQgdGhlIERCX0NhY2hlIGNsYXNzLCBhbmQgdGhlIE1hZ3BpZSBwbHVnaW4sIHdoaWNoIGNvbnRhaW5zCi1ib3RoIHRoZSBNYWdwaWUgYW5kIFNub29weSBjbGFzc2VzLgorVXNlIHNlcGFyYXRlIGZpbGVzIGZvciBlYWNoIGNsYXNzLCB1bmxlc3MgdGhlIGNsYXNzZXMgYXJlICpjbG9zZWx5IHJlbGF0ZWQqLgorQW4gZXhhbXBsZSBvZiBhIENvZGVJZ25pdGVyIGZpbGUgdGhhdCBjb250YWlucyBtdWx0aXBsZSBjbGFzc2VzIGlzIHRoZSAKK1htbHJwYyBsaWJyYXJ5IGZpbGUuCiAKIFdoaXRlc3BhY2UKID09PT09PT09PT0KQEAgLTUzNiw4ICs0OTAsOCBAQAogTG9jYWxpemVkIFRleHQKID09PT09PT09PT09PT09CiAKLUFueSB0ZXh0IHRoYXQgaXMgb3V0cHV0IGluIHRoZSBjb250cm9sIHBhbmVsIHNob3VsZCB1c2UgbGFuZ3VhZ2UKLXZhcmlhYmxlcyBpbiB5b3VyIGxhbmcgZmlsZSB0byBhbGxvdyBsb2NhbGl6YXRpb24uCitDb2RlSWduaXRlciBsaWJyYXJpZXMgc2hvdWxkIHRha2UgYWR2YW50YWdlIG9mIGNvcnJlc3BvbmRpbmcgbGFuZ3VhZ2UgZmlsZXMKK3doZW5ldmVyIHBvc3NpYmxlLgogCiAqKklOQ09SUkVDVCoqOjoKIApAQCAtNTUwLDcgKzUwNCw3IEBACiBQcml2YXRlIE1ldGhvZHMgYW5kIFZhcmlhYmxlcwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotTWV0aG9kcyBhbmQgdmFyaWFibGVzIHRoYXQgYXJlIG9ubHkgYWNjZXNzZWQgaW50ZXJuYWxseSBieSB5b3VyIGNsYXNzLAorTWV0aG9kcyBhbmQgdmFyaWFibGVzIHRoYXQgYXJlIG9ubHkgYWNjZXNzZWQgaW50ZXJuYWxseSwKIHN1Y2ggYXMgdXRpbGl0eSBhbmQgaGVscGVyIGZ1bmN0aW9ucyB0aGF0IHlvdXIgcHVibGljIG1ldGhvZHMgdXNlIGZvcgogY29kZSBhYnN0cmFjdGlvbiwgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGggYW4gdW5kZXJzY29yZS4KIApAQCAtNTY3LDcgKzUyMSw3IEBACiB0aGF0IHlvdSBkaWQgbm90IHNldCB5b3Vyc2VsZiAoc3VjaCBhcyBgYCRfUE9TVGBgIGFycmF5IGtleXMpIHdpdGhvdXQgZmlyc3QKIGNoZWNraW5nIHRvIHNlZSB0aGF0IGl0IGBgaXNzZXQoKWBgLgogCi1NYWtlIHN1cmUgdGhhdCB3aGlsZSBkZXZlbG9waW5nIHlvdXIgYWRkLW9uLCBlcnJvciByZXBvcnRpbmcgaXMgZW5hYmxlZAorTWFrZSBzdXJlIHRoYXQgeW91ciBkZXYgZW52aXJvbm1lbnQgaGFzIGVycm9yIHJlcG9ydGluZyBlbmFibGVkCiBmb3IgQUxMIHVzZXJzLCBhbmQgdGhhdCBkaXNwbGF5X2Vycm9ycyBpcyBlbmFibGVkIGluIHRoZSBQSFAKIGVudmlyb25tZW50LiBZb3UgY2FuIGNoZWNrIHRoaXMgc2V0dGluZyB3aXRoOjoKIApkaWZmIC0tZ2l0IGEvdXNlcl9ndWlkZV9zcmMvc291cmNlL2luc3RhbGxhdGlvbi91cGdyYWRlXzMwMC5yc3QgYi91c2VyX2d1aWRlX3NyYy9zb3VyY2UvaW5zdGFsbGF0aW9uL3VwZ3JhZGVfMzAwLnJzdAppbmRleCBhM2VhMDFkLi4wMjg0MWFiIDEwMDY0NAotLS0gYS91c2VyX2d1aWRlX3NyYy9zb3VyY2UvaW5zdGFsbGF0aW9uL3VwZ3JhZGVfMzAwLnJzdAorKysgYi91c2VyX2d1aWRlX3NyYy9zb3VyY2UvaW5zdGFsbGF0aW9uL3VwZ3JhZGVfMzAwLnJzdApAQCAtMSw1ICsxLDUgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1VcGdyYWRpbmcgZnJvbSAyLjEuMiB0byAzLjAuMAorVXBncmFkaW5nIGZyb20gMi4xLjMgdG8gMy4wLjAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIC4uIG5vdGU6OiBUaGVzZSB1cGdyYWRlIG5vdGVzIGFyZSBmb3IgYSB2ZXJzaW9uIHRoYXQgaXMgeWV0IHRvIGJlIHJlbGVhc2VkLgpAQCAtMTA0LDkgKzEwNCw5IEBACiAJKC4rKQkvLyBtYXRjaGVzIEFOWVRISU5HCiAJKDphbnkpCS8vIG1hdGNoZXMgYW55IGNoYXJhY3RlciwgZXhjZXB0IGZvciAnLycKIAotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotU3RlcCA5OiBVcGRhdGUgeW91ciBsaWJyYXJhcmllcycgZmlsZSBuYW1lcwotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK1N0ZXAgOTogVXBkYXRlIHlvdXIgbGlicmFyaWVzJyBmaWxlIG5hbWVzCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCiBDb2RlSWduaXRlciAzLjAgb25seSBhbGxvd3MgbGlicmFyeSBmaWxlIG5hbWVzIHRvIGJlIG5hbWVkIGluIGEgKnVjZmlyc3QqIG1hbm5lcgogKG1lYW5pbmcgdGhhdCB0aGUgZmlyc3QgbGV0dGVyIG9mIHRoZSBjbGFzcyBuYW1lIG11c3QgYmUgYSBjYXBpdGFsKS4gRm9yIGV4YW1wbGUsCkBAIC0xMzYsOCArMTM2LDE1IEBACiBUaGUgZGVmYXVsdCByZXR1cm4gdmFsdWUgb2YgdGhlc2UgZnVuY3Rpb25zLCB3aGVuIHRoZSByZXF1aXJlZCBlbGVtZW50cwogZG9uJ3QgZXhpc3QsIGhhcyBiZWVuIGNoYW5nZWQgZnJvbSBGQUxTRSB0byBOVUxMLgogCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorU3RlcCAxMTogQ2hlY2sgdGhlIGNhbGxzIHRvIERpcmVjdG9yeSBIZWxwZXIncyBkaXJlY3RvcnlfbWFwKCkgZnVuY3Rpb24KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0luIHRoZSByZXN1bHRpbmcgYXJyYXksIGRpcmVjdG9yaWVzIG5vdyBlbmQgd2l0aCBhIHRyYWlsaW5nIGRpcmVjdG9yeQorc2VwYXJhdG9yIChpLmUuIGEgc2xhc2gsIHVzdWFsbHkpLgorCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1TdGVwIDExOiBVcGRhdGUgdXNhZ2Ugb2YgRGF0YWJhc2UgRm9yZ2UncyBkcm9wX3RhYmxlKCkgbWV0aG9kCitTdGVwIDEyOiBVcGRhdGUgdXNhZ2Ugb2YgRGF0YWJhc2UgRm9yZ2UncyBkcm9wX3RhYmxlKCkgbWV0aG9kCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKIFVwIHVudGlsIG5vdywgYGBkcm9wX3RhYmxlKClgYCBhZGRlZCBhbiBJRiBFWElTVFMgY2xhdXNlIGJ5IGRlZmF1bHQgb3IgaXQgZGlkbid0IHdvcmsKQEAgLTE1OSw3ICsxNjYsNyBAQAogCWFsbCBkcml2ZXJzIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBPREJDLgogCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotU3RlcCAxMjogQ2hhbmdlIHVzYWdlIG9mIEVtYWlsIGxpYnJhcnkgd2l0aCBtdWx0aXBsZSBlbWFpbHMKK1N0ZXAgMTM6IENoYW5nZSB1c2FnZSBvZiBFbWFpbCBsaWJyYXJ5IHdpdGggbXVsdGlwbGUgZW1haWxzCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCiBUaGUgOmRvYzpgRW1haWwgTGlicmFyeSA8Li4vbGlicmFyaWVzL2VtYWlsPmAgd2lsbCBhdXRvbWF0aWNhbGx5IGNsZWFyIHRoZQpAQCAtMTc0LDcgKzE4MSw3IEBACiAgCX0KIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1TdGVwIDEzOiBVcGRhdGUgeW91ciBGb3JtX3ZhbGlkYXRpb24gbGFuZ3VhZ2UgbGluZXMKK1N0ZXAgMTQ6IFVwZGF0ZSB5b3VyIEZvcm1fdmFsaWRhdGlvbiBsYW5ndWFnZSBsaW5lcwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKIFR3byBpbXByb3ZlbWVudHMgaGF2ZSBiZWVuIG1hZGUgdG8gdGhlIDpkb2M6YEZvcm0gVmFsaWRhdGlvbiBMaWJyYXJ5CkBAIC0yMDUsNyArMjEyLDcgQEAKIAlsYXRlci4KIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotU3RlcCAxNDogUmVtb3ZlIHVzYWdlIG9mIChwcmV2aW91c2x5KSBkZXByZWNhdGVkIGZ1bmN0aW9uYWxpdGllcworU3RlcCAxNTogUmVtb3ZlIHVzYWdlIG9mIChwcmV2aW91c2x5KSBkZXByZWNhdGVkIGZ1bmN0aW9uYWxpdGllcwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCiBJbiBhZGRpdGlvbiB0byB0aGUgYGAkYXV0b2xvYWRbJ2NvcmUnXWBgIGNvbmZpZ3VyYXRpb24gc2V0dGluZywgdGhlcmUncyBhCkBAIC0yMzgsNyArMjQ1LDcgQEAKIDpkb2M6YFNlY3VyaXR5IEhlbHBlciA8Li4vaGVscGVycy9zZWN1cml0eV9oZWxwZXI+YCBmdW5jdGlvbiBgYGRvX2hhc2goKWBgIGlzIG5vdyBqdXN0IGFuIGFsaWFzIGZvcgogUEhQJ3MgbmF0aXZlIGBgaGFzaCgpYGAgZnVuY3Rpb24uIEl0IGlzIGRlcHJlY2F0ZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBDb2RlSWduaXRlciAzLjErLgogCi0uLiBub3RlOjogVGhpcyBmdW5jdGlvbiBpcyBzdGlsbCBhdmFpbGFibGUsIGJ1dCB5b3UncmUgc3Ryb25nbHkgZW5jb3VyYWdlZCB0byByZW1vdmUgaXQncyB1c2FnZSBzb29uZXIKKy4uIG5vdGU6OiBUaGlzIGZ1bmN0aW9uIGlzIHN0aWxsIGF2YWlsYWJsZSwgYnV0IHlvdSdyZSBzdHJvbmdseSBlbmNvdXJhZ2VkIHRvIHJlbW92ZSBpdHMgdXNhZ2Ugc29vbmVyCiAJcmF0aGVyIHRoYW4gbGF0ZXIuCiAKIEZpbGUgaGVscGVyIHJlYWRfZmlsZSgpCkBAIC0yNDgsNyArMjU1LDcgQEAKIFBIUCdzIG5hdGl2ZSBgYGZpbGVfZ2V0X2NvbnRlbnRzKClgYCBmdW5jdGlvbi4gSXQgaXMgZGVwcmVjYXRlZCBhbmQgc2NoZWR1bGVkIGZvciByZW1vdmFsIGluCiBDb2RlSWduaXRlciAzLjErLgogCi0uLiBub3RlOjogVGhpcyBmdW5jdGlvbiBpcyBzdGlsbCBhdmFpbGFibGUsIGJ1dCB5b3UncmUgc3Ryb25nbHkgZW5jb3VyYWdlZCB0byByZW1vdmUgaXQncyB1c2FnZSBzb29uZXIKKy4uIG5vdGU6OiBUaGlzIGZ1bmN0aW9uIGlzIHN0aWxsIGF2YWlsYWJsZSwgYnV0IHlvdSdyZSBzdHJvbmdseSBlbmNvdXJhZ2VkIHRvIHJlbW92ZSBpdHMgdXNhZ2Ugc29vbmVyCiAJcmF0aGVyIHRoYW4gbGF0ZXIuCiAKIFN0cmluZyBoZWxwZXIgcmVwZWF0ZXIoKQpAQCAtMjU3LDcgKzI2NCw3IEBACiA6ZG9jOmBTdHJpbmcgSGVscGVyIDwuLi9oZWxwZXJzL3N0cmluZ19oZWxwZXI+YCBmdW5jdGlvbiA6cGhwOmZ1bmM6YHJlcGVhdGVyKClgIGlzIG5vdyBqdXN0IGFuIGFsaWFzIGZvcgogUEhQJ3MgbmF0aXZlIGBgc3RyX3JlcGVhdCgpYGAgZnVuY3Rpb24uIEl0IGlzIGRlcHJlY2F0ZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBDb2RlSWduaXRlciAzLjErLgogCi0uLiBub3RlOjogVGhpcyBmdW5jdGlvbiBpcyBzdGlsbCBhdmFpbGFibGUsIGJ1dCB5b3UncmUgc3Ryb25nbHkgZW5jb3VyYWdlZCB0byByZW1vdmUgaXQncyB1c2FnZSBzb29uZXIKKy4uIG5vdGU6OiBUaGlzIGZ1bmN0aW9uIGlzIHN0aWxsIGF2YWlsYWJsZSwgYnV0IHlvdSdyZSBzdHJvbmdseSBlbmNvdXJhZ2VkIHRvIHJlbW92ZSBpdHMgdXNhZ2Ugc29vbmVyCiAJcmF0aGVyIHRoYW4gbGF0ZXIuCiAKIFN0cmluZyBoZWxwZXIgdHJpbV9zbGFzaGVzKCkKQEAgLTI2Nyw3ICsyNzQsNyBAQAogZm9yIFBIUCdzIG5hdGl2ZSBgYHRyaW0oKWBgIGZ1bmN0aW9uICh3aXRoIGEgc2xhc2ggcGFzc2VkIGFzIGl0cyBzZWNvbmQgYXJndW1lbnQpLiBJdCBpcyBkZXByZWNhdGVkIGFuZAogc2NoZWR1bGVkIGZvciByZW1vdmFsIGluIENvZGVJZ25pdGVyIDMuMSsuCiAKLS4uIG5vdGU6OiBUaGlzIGZ1bmN0aW9uIGlzIHN0aWxsIGF2YWlsYWJsZSwgYnV0IHlvdSdyZSBzdHJvbmdseSBlbmNvdXJhZ2VkIHRvIHJlbW92ZSBpdCdzIHVzYWdlIHNvb25lcgorLi4gbm90ZTo6IFRoaXMgZnVuY3Rpb24gaXMgc3RpbGwgYXZhaWxhYmxlLCBidXQgeW91J3JlIHN0cm9uZ2x5IGVuY291cmFnZWQgdG8gcmVtb3ZlIGl0cyB1c2FnZSBzb29uZXIKIAlyYXRoZXIgdGhhbiBsYXRlci4KIAogRW1haWwgaGVscGVyIGZ1bmN0aW9ucwpAQCAtMjkyLDcgKzI5OSw3IEBACiB0byB0aGUgYXZhaWxhYmlsaXR5IG9mIG5hdGl2ZSBQSFAgYGNvbnN0YW50cyA8aHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9jbGFzcy5kYXRldGltZS5waHAjZGF0ZXRpbWUuY29uc3RhbnRzLnR5cGVzPmBfLAogd2hpY2ggd2hlbiBjb21iaW5lZCB3aXRoIGBgZGF0ZSgpYGAgcHJvdmlkZSB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5LiBGdXJ0aGVybW9yZSwgdGhleSBoYXZlIHRoZQogZXhhY3Qgc2FtZSBuYW1lcyBhcyB0aGUgb25lcyBzdXBwb3J0ZWQgYnkgYGBzdGFuZGFyZF9kYXRlKClgYC4gSGVyZSBhcmUgZXhhbXBsZXMgb2YgaG93IHRvIHJlcGxhY2UKLWl0J3MgdXNhZ2U6CitpdHMgdXNhZ2U6CiAKIDo6CiAKQEAgLTMwOCw3ICszMTUsNyBAQAogCS8vIFJlcGxhY2VtZW50CiAJZGF0ZShEQVRFX0FUT00sICR0aW1lKTsKIAotLi4gbm90ZTo6IFRoaXMgZnVuY3Rpb24gaXMgc3RpbGwgYXZhaWxhYmxlLCBidXQgeW91J3JlIHN0cm9uZ2x5IGVuY291cmFnZWQgdG8gcmVtb3ZlIGl0cycgdXNhZ2Ugc29vbmVyCisuLiBub3RlOjogVGhpcyBmdW5jdGlvbiBpcyBzdGlsbCBhdmFpbGFibGUsIGJ1dCB5b3UncmUgc3Ryb25nbHkgZW5jb3VyYWdlZCB0byByZW1vdmUgaXRzIHVzYWdlIHNvb25lcgogCXJhdGhlciB0aGFuIGxhdGVyIGFzIGl0IGlzIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBDb2RlSWduaXRlciAzLjErLgogCiBQYWdpbmF0aW9uIGxpYnJhcnkgJ2FuY2hvcl9jbGFzcycgc2V0dGluZwpAQCAtMzIwLDcgKzMyNyw3IEBACiBBcyBhIHJlc3VsdCBvZiB0aGF0LCB0aGUgJ2FuY2hvcl9jbGFzcycgc2V0dGluZyBpcyBub3cgZGVwcmVjYXRlZCBhbmQgc2NoZWR1bGVkIGZvciByZW1vdmFsIGluCiBDb2RlSWduaXRlciAzLjErLgogCi0uLiBub3RlOjogVGhpcyBzZXR0aW5nIGlzIHN0aWxsIGF2YWlsYWJsZSwgYnV0IHlvdSdyZSBzdHJvbmdseSBlbmNvdXJhZ2VkIHRvIHJlbW92ZSBpdHMnIHVzYWdlIHNvb25lcgorLi4gbm90ZTo6IFRoaXMgc2V0dGluZyBpcyBzdGlsbCBhdmFpbGFibGUsIGJ1dCB5b3UncmUgc3Ryb25nbHkgZW5jb3VyYWdlZCB0byByZW1vdmUgaXRzIHVzYWdlIHNvb25lcgogCXJhdGhlciB0aGFuIGxhdGVyLgogCiBTdHJpbmcgaGVscGVyIHJhbmRvbV9zdHJpbmcoKSB0eXBlcyAndW5pcXVlJyBhbmQgJ2VuY3J5cHQnCmRpZmYgLS1naXQgYS91c2VyX2d1aWRlX3NyYy9zb3VyY2UvbGlicmFyaWVzL21pZ3JhdGlvbi5yc3QgYi91c2VyX2d1aWRlX3NyYy9zb3VyY2UvbGlicmFyaWVzL21pZ3JhdGlvbi5yc3QKaW5kZXggOWE3YjEwZC4uYjczNGY1YyAxMDA2NDQKLS0tIGEvdXNlcl9ndWlkZV9zcmMvc291cmNlL2xpYnJhcmllcy9taWdyYXRpb24ucnN0CisrKyBiL3VzZXJfZ3VpZGVfc3JjL3NvdXJjZS9saWJyYXJpZXMvbWlncmF0aW9uLnJzdApAQCAtMTAsNyArMTAsNyBAQAogCiBUaGUgZGF0YWJhc2UgdGFibGUgKiptaWdyYXRpb24qKiB0cmFja3Mgd2hpY2ggbWlncmF0aW9ucyBoYXZlIGFscmVhZHkgYmVlbiAKIHJ1biBzbyBhbGwgeW91IGhhdmUgdG8gZG8gaXMgdXBkYXRlIHlvdXIgYXBwbGljYXRpb24gZmlsZXMgYW5kIAotY2FsbCAqKiR0aGlzLT5taWdyYXRlLT5jdXJyZW50KCkqKiB0byB3b3JrIG91dCB3aGljaCBtaWdyYXRpb25zIHNob3VsZCBiZSBydW4uIAorY2FsbCAqKiR0aGlzLT5taWdyYXRpb24tPmN1cnJlbnQoKSoqIHRvIHdvcmsgb3V0IHdoaWNoIG1pZ3JhdGlvbnMgc2hvdWxkIGJlIHJ1bi4gCiBUaGUgY3VycmVudCB2ZXJzaW9uIGlzIGZvdW5kIGluICoqY29uZmlnL21pZ3JhdGlvbi5waHAqKi4KIAogKioqKioqKioqKioqKioqKioqKioKZGlmZiAtLWdpdCBhL3VzZXJfZ3VpZGVfc3JjL3NvdXJjZS90dXRvcmlhbC9uZXdzX3NlY3Rpb24ucnN0IGIvdXNlcl9ndWlkZV9zcmMvc291cmNlL3R1dG9yaWFsL25ld3Nfc2VjdGlvbi5yc3QKaW5kZXggODMzZTM0ZS4uZDc3NTRlOSAxMDA2NDQKLS0tIGEvdXNlcl9ndWlkZV9zcmMvc291cmNlL3R1dG9yaWFsL25ld3Nfc2VjdGlvbi5yc3QKKysrIGIvdXNlcl9ndWlkZV9zcmMvc291cmNlL3R1dG9yaWFsL25ld3Nfc2VjdGlvbi5yc3QKQEAgLTE2Miw3ICsxNjIsNyBAQAogbmV3cyBpdGVtcyBpcyBzdGlsbCBhYnNlbnQuIFRoZSBtb2RlbCBjcmVhdGVkIGVhcmxpZXIgaXMgbWFkZSBpbiBzdWNoCiB3YXkgdGhhdCBpdCBjYW4gZWFzaWx5IGJlIHVzZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eS4gWW91IG9ubHkgbmVlZCB0bwogYWRkIHNvbWUgY29kZSB0byB0aGUgY29udHJvbGxlciBhbmQgY3JlYXRlIGEgbmV3IHZpZXcuIEdvIGJhY2sgdG8gdGhlCi1uZXdzIGNvbnRyb2xsZXIgYW5kIGFkZCB0aGUgZm9sbG93aW5nIGxpbmVzIHRvIHRoZSBmaWxlLgorbmV3cyBjb250cm9sbGVyIGFuZCB1cGRhdGUgYGB2aWV3KClgYCB3aXRoIHRoZSBmb2xsb3dpbmc6CiAKIDo6CiAKQEAgLTIxMSw0ICsyMTEsNCBAQAogCSRyb3V0ZVsnZGVmYXVsdF9jb250cm9sbGVyJ10gPSAncGFnZXMvdmlldyc7CiAKIFBvaW50IHlvdXIgYnJvd3NlciB0byB5b3VyIGRvY3VtZW50IHJvb3QsIGZvbGxvd2VkIGJ5IGluZGV4LnBocC9uZXdzIGFuZAotd2F0Y2ggeW91ciBuZXdzIHBhZ2UuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQord2F0Y2ggeW91ciBuZXdzIHBhZ2UuCg==